Zwykle rsync
pomija pliki, gdy pliki mają identyczne rozmiary i czasy po stronie źródłowej i docelowej. Jest to heurystyka, która zazwyczaj jest dobrym pomysłem, ponieważ zapobiega rsync
konieczności sprawdzania zawartości plików, które najprawdopodobniej są identyczne po stronie źródłowej i docelowej.
--ignore-times
każe rsync
wyłączyć heurystykę czasów i rozmiarów plików, a tym samym bezwarunkowo przesłać WSZYSTKIE pliki ze źródła do miejsca docelowego. rsync
przejdzie następnie do odczytu każdego pliku po stronie źródłowej, ponieważ będzie musiał albo użyć algorytmu transferu delta, albo po prostu wysłać każdy plik w całości, w zależności od tego, czy --whole-file
podano opcję.
--checksum
modyfikuje także heurystykę czasów i rozmiarów plików, ale tutaj ignoruje czasy i sprawdza tylko rozmiary. Pliki po stronie źródłowej i docelowej, które różnią się rozmiarem, są przesyłane, ponieważ są oczywiście różne. Pliki o tym samym rozmiarze są rsync
sumowane (z MD5 w wersji 3.0.0+ lub z MD4 we wcześniejszych wersjach), a pliki, które mają różne sumy, są również przesyłane.
W przypadkach, gdy strony źródłowa i docelowa są w większości takie same, --checksum
spowoduje to , że większość plików zostanie sprawdzona po obu stronach. Może to zająć dużo czasu, ale wynik jest taki, że najdrobniejsze minimum danych zostanie faktycznie przesłane przewodem, szczególnie jeśli zostanie użyty algorytm transferu delta. Oczywiście jest to tylko zwycięstwo, jeśli masz bardzo wolne sieci i / lub bardzo szybki procesor.
--ignore-times
z drugiej strony wyśle więcej danych przez sieć i spowoduje odczyt wszystkich plików źródłowych, ale przynajmniej nie nałoży dodatkowego obciążenia związanego z obliczeniem wielu silnie kryptograficznie silnych sum na procesorach źródłowych i docelowych. Spodziewałbym się, że ta opcja będzie działać lepiej niż --checksum
wtedy, gdy twoje sieci są szybkie i / lub procesor stosunkowo wolny.
Wydaje mi się, że kiedykolwiek używałbym --checksum
lub --ignore-times
gdybym przesyłał pliki do miejsca docelowego, w którym podejrzewano, że zawartość niektórych plików była uszkodzona, ale których czasy modyfikacji nie uległy zmianie. Naprawdę nie mogę wymyślić żadnego innego dobrego powodu, aby użyć którejkolwiek z tych opcji, chociaż prawdopodobnie istnieją inne przypadki użycia.
--checksum
przydatne wraz z--itemize-changes
weryfikacją kopii zapasowych. Co jakiś czas moje skrypty kopii zapasowej uruchamiają pełne porównanie w ten sposób po zakończeniu bieżących codziennych / tygodniowych aktualizacji. Dostaję wiadomość e-mail oznaczoną jako pilna, jeśli--itemize-changes
wydarzy się coś nieoczekiwanego, więc wiem, że istnieje potencjalny problem, który powinienem sprawdzić.--ignore-times
a szczególnie--checksum
są konieczne, jeśli jeden z „plików” jest kontenerem plików Truecrypt, ponieważ domyślnie znacznik czasu pliku nie jest aktualizowany. Zobacz productforums.google.com/forum/#!topic/drive/gnmDp3UXEgs i ask-leo.com/why_wont_my_truecrypt_volume_backup.html--checksum
suma kontrolna dotyczy tylko nazw plików źródłowych na komputerze docelowym lub wszystkich plików w katalogu docelowym?suma kontrolna jest również przydatna, jeśli używasz innego systemu do synchronizacji plików, który nie zachował znaczników czasu. Suma kontrolna będzie przenosić tylko pliki, które są różne ORAZ zaktualizować wszystkie znaczniki czasu po stronie odbierającej, aby były zgodne
źródło
Jeden szczegół: opcja sumy kontrolnej sprawdza cały plik na jednym końcu, a następnie cały plik na drugim końcu. Jeśli twoje pliki są dość duże, ten rodzaj zabija równoległość.
Ponadto, jeśli masz ogromne pliki, najprawdopodobniej skończy się limit czasu
--checksum
, ponieważ tak nie jest-I
.źródło
W
info rsync
odniesieniu do--checksum
opcji - „Ponieważ to sumowanie wszystkich plików po obu stronach połączenia ma miejsce oprócz automatycznych weryfikacji sum kontrolnych, które występują podczas przesyłania pliku, ta opcja może być dość wolna”.źródło
Ta
--ignore-times
opcja prawdopodobnie spowoduje, że wszystkie pliki zostaną zakodowane w formacie delta, a algorytm transferu delta (kodowanie delta) będzie co najmniej tak wolny, jak sumowanie kontrolne.Nie wiem, czy rsync
--ignore-times
jest wystarczająco inteligentny, aby uniknąć „automatycznej weryfikacji po przesłaniu” w częstym przypadku, gdy przeniesienie delta spowoduje, że nic nie zostanie przeniesione.Dla
--ignore-times
:Zarówno
--checksum
i--ignore-times
będzie „dość powolna”, ale--ignore-times
jest prawdopodobne, nawet wolniej (ze względu na możliwości 2 powyżej).Dobre pytanie - proszę pisać, jeśli znajdziesz jakieś różnice w wydajności w praktyce.
źródło