Zidentyfikować pliki, które zostałyby usunięte podczas usuwania katalogu rsync --link-dest?

2

Mam system tworzenia kopii zapasowych w stylu Time Machine skonfigurowany na moim serwerze NAS (z zainstalowanym BusyBox v1.16.1), używając rsync --link-destopisanego tutaj: http://blog.interlinked.org/tutorials/rsync_time_machine.html

Czy istnieje prosty sposób, aby dowiedzieć się, które pliki zostaną usunięte, jeśli usunę stary katalog kopii zapasowej, a które zostaną rozłączone? Zakładam, że jednym ze sposobów byłoby znalezienie, które i-węzły w starym katalogu mają tylko jeden link do nich, ale nie wiem, jak to zrobić. rm --dry-runktoś?

Punkty bonusowe: Znajdź sposób na wykonanie powyższych czynności, a także oblicz całkowitą ilość wolnego miejsca na dysku, jeśli stara kopia zapasowa zostanie usunięta.

JDS
źródło

Odpowiedzi:

2

Prostym sposobem byłoby użycie find z -linksopcją.

W szczególności chciałbyś zrobić coś takiego find path -type f -links 1.

Nie testowałem, ale wierzę, że takie polecenie usunie wszystkie połączone pliki.

# you might not need to escape the !, depends on your shell
# should find all the files that do NOT have a link count of 1 and delete them
find path -type f \! links 1 -print -delete 
Zoredache
źródło
Dzięki! To jest perfekcyjne. Nie potrzebuję drugiej części; ponieważ obrazy kopii zapasowych są pełne twardych linków, muszę po prostu usunąć najstarszy katalog kopii zapasowych. find oldest/ -type f -links 1 >> files-lost-forever.txt; find oldest/ -type f -links 1 -print0 | xargs -0 du | awk '{total = total + $1}END{print total " bytes freed"}'; rm -rf oldest;
JDS
er ... s/du/du -k/is/bytes/Kb/
JDS