Обычно, rsync
файлы пропускаются, когда файлы имеют одинаковые размеры и время на исходной и целевой сторонах. Это эвристика, которая, как правило, является хорошей идеей, так как она предотвращает rsync
необходимость проверки содержимого файлов, которые, скорее всего, идентичны на исходной и целевой сторонах.
--ignore-times
говорит rsync
отключить эвристику файлов-раз-и-размеров и, таким образом, безоговорочно передавать ВСЕ файлы из источника в место назначения. rsync
затем приступит к чтению каждого файла на стороне источника, поскольку ему нужно будет либо использовать свой алгоритм дельта-передачи, либо просто отправить каждый файл целиком, в зависимости от того, --whole-file
была ли указана опция.
--checksum
также изменяет эвристику файла-времени и размеров, но здесь он игнорирует времена и рассматривает только размеры. Файлы на исходной и целевой сторонах, которые различаются по размеру, передаются, поскольку они, очевидно, различаются. Файлы с одинаковым размером rsync
проверяются контрольной суммой (с MD5 в версии 3.0.0+ или с MD4 в более ранних версиях), а также передаются файлы с разными суммами.
В тех случаях, когда исходная и целевая стороны в основном совпадают, --checksum
большинство контрольных сумм файлов будет с обеих сторон. Это может занять много времени, но в результате минимальный объем данных будет передаваться по проводам, особенно если используется алгоритм дельта-передачи. Конечно, это только выигрыш, если у вас очень медленные сети и / или очень быстрый процессор.
--ignore-times
с другой стороны, отправит больше данных по сети, и это приведет к чтению всех исходных файлов, но, по крайней мере, это не налагает дополнительную нагрузку на вычисление многих криптографически стойких хеш-сумм на исходном и целевом ЦП. Я ожидаю, что эта опция будет работать лучше, чем --checksum
когда ваши сети работают быстро и / или ваш процессор относительно медленный.
Я думаю, что я буду использовать только --checksum
или --ignore-times
если бы я передавал файлы в место назначения, где подозревалось, что содержимое некоторых файлов было повреждено, но время изменения которых не изменилось. Я не могу придумать какой-либо другой веской причины использовать любую из этих опций, хотя, возможно, есть и другие варианты использования.
--checksum
полезным наряду с--itemize-changes
проверкой резервных копий. Время от времени мои скрипты резервного копирования запускаются для полного сравнения таким образом после завершения текущих ежедневных / еженедельных обновлений. Я получаю письмо, помеченное как срочное, если--itemize-changes
выдает что-то неожиданное, поэтому я знаю, что есть потенциальная проблема, которую я должен изучить