Czy istnieje sposób pozwalający rsync
porównywać tylko znaczniki czasu plików i ignorować ich zawartość? Obejmuje to ignorowanie rozmiaru pliku. Tylko znacznik czasu. Nic poza znacznikiem czasu.
Rsync nie może porównywać plików przy użyciu tylko sygnatury czasowej. Zawsze będzie porównywał rozmiar pliku niezależnie od tego, a jeśli -c
go określisz , będzie również porównywać sumę kontrolną pliku.
Celem rsync jest dopasowanie jednego drzewa plików do drugiego. Jeśli plik w jednym drzewie ma inny rozmiar niż ten sam plik w drugim drzewie, muszą one logicznie się różnić. Więc rsync go skopiuje. Bez względu.
Jeśli chcesz skopiować pliki tak, jak chcesz, musisz zastosować inną metodę przy użyciu różnych narzędzi.
Jeśli chcesz kopiować tylko pliki, które zmieniły się od znanej daty (powiedzmy, kiedy ostatnio kopiowałeś pliki), możesz użyć flagi find -cnewer. Poniższy mały skrypt znajdzie pliki, które zmieniły się od ostatniego uruchomienia:
find /path/to/files -cnewer /tmp/lastSync
touch /tmp/lastSync
-Cnewer porównuje czas modyfikacji pliku z czasem określonego pliku (/ tmp / lastSync w tym przykładzie):
-cnewer file
File's status was last changed more recently than file was modified.
If file is a symbolic link and the -H option or the -L option is in
effect, the status-change time of the file it points to is always used.
Polecenie touch zaktualizuje znacznik czasu / tmp / lastSync, aby odzwierciedlić fakt, że skrypt został właśnie uruchomiony, dzięki czemu kolejne uruchomienia skryptu wykorzystują bieżącą godzinę jako podstawę czasu.
Dane wyjściowe polecenia find mogą być następnie użyte do określenia plików do skopiowania do miejsca docelowego przy użyciu dowolnej metody (cp, scp, cokolwiek).