Jak sprawić, aby rsync nie drukował katalogów

6

Używam rsync do tworzenia kopii zapasowych na zewnętrznym dysku twardym. Zwykle najpierw biegnę na sucho, żeby sprawdzić zdrowie psychiczne. W szczególności użyję

rsync -auvn path/to/source path/to/dest

Jednak powoduje to wydrukowanie wszystkich katalogów, do których się zwrócono, bez względu na to, czy należy je skopiować, czy nie. Ponieważ tworzę kopię zapasową dużej struktury plików, drukuje to nasze setki katalogów i zwykle jest tylko kilka plików, które należy skopiować. Tak więc ten wynik nie jest idealny i wymaga ode mnie przekopania się przez setki linii niepotrzebnych danych wyjściowych, aby faktycznie przeprowadzić kontrolę zdrowia psychicznego.

Chciałbym móc powiedzieć mu, aby drukowało tylko rzeczywiste operacje do wykonania. Moje obecne obejście polega na tym | grep '\.', ale oczywiście nie jest to idealny filtr.

Czy jest jakiś sposób, aby tryb rsync działający na sucho nie drukował katalogów?

Andrew Schwartz
źródło

Odpowiedzi:

5

Często używam rsync do synchronizowania struktur katalogów i lubię wykonywać próbę przed uruchomieniem właściwego polecenia. Ja też denerwuje mnie drukowanie nazw katalogów, więc używam ich grepdo odfiltrowywania.

Jedną z różnic między moim użytkowaniem a Twoim jest to, że korzystam z --deleteopcji usuwania plików z katalogu docelowego. W związku z tym nie chcę grepodfiltrowywać wierszy takich jak

deleting folderA/
deleting folderA/folderB/

Chciałbym też zachować pustą linię ( ^$) dla czytelności, więc pełny potok to:

rsync -auvn --delete source_folder destination_folder | grep -E '^deleting|[^/]$|^$'

Byłoby wspaniale, gdyby rsyncmiał flagę, aby nie wypisywać nazw katalogów (ma opcję dla prawie wszystkiego innego), ale tymczasem jest to najlepszy hack, jaki wymyśliłem.

Anthony Geoghegan
źródło