Rsync zmienił tylko pliki

14

Czy można rsyncprzenieść wszystkie pliki w katalogu, który został zmieniony lub został utworzony? Nie potrzebuję czegoś tak wyrafinowanego jak kontrola różnic CRC; pliki z różnymi znacznikami czasu i / lub rozmiarami plików liczą się jako zmiany.

Ze strony podręcznika mam wrażenie, że powinno to być możliwe, ale potrzebuję trochę wskazówek, jaki zestaw parametrów przekazać rsync.

instanceofTom
źródło

Odpowiedzi:

19

Aby po prostu zsynchronizować dwa katalogi:

$ rsync /source/path/* /dest/path/

Lub jeśli chcesz zrobić całe drzewo:

$ rsync -a /source/path/ /dest/path/

„-a” określa tryb „archiwizacji”, w którym drzewo jest możliwie jak najbardziej duplikowane.

Lubię dodawać flagi vi Ptam, aby móc zobaczyć, jak działa:

$rsync -avP /source/path/ /dest/path/

„-v” włącza pełny tryb, dzięki czemu można zobaczyć, co robi (wyświetla listę plików podczas kopiowania), a „-P” włącza postęp, dzięki czemu można zobaczyć, ile czasu zajmuje skopiowanie każdego pliku (procent skopiowanych, pozostały czas itp.) i pozwala zobaczyć, jak daleko znajdujesz się w kopii.

Majenko
źródło
3
... i być może dodaj flagę Z, aby użyć kompresji dla transferu
Linker3000,
4
... jeśli przenosisz się w odległe miejsce
Majenko,
14

Tak rsyncdziała domyślnie (przynajmniej w systemie Linux). Ze strony podręcznika :

Rsync znajduje pliki, które należy przesłać za pomocą algorytmu „szybkiej kontroli” (domyślnie), który wyszukuje pliki, które zmieniły rozmiar lub czas ostatniej modyfikacji. Wszelkie zmiany innych zachowanych atrybutów (zgodnie z żądaniem opcji) są wprowadzane bezpośrednio do pliku docelowego, gdy szybkie sprawdzenie wskazuje, że dane pliku nie muszą być aktualizowane.

Rob H.
źródło
Ach, pomyliłem się, źle czytając dokumentację. Dzięki :)
instanceofTom