Что относительно http://www.timesnapper.com/
У меня нет особого опыта этого продукта, но он делает то, что Вы хотите?
Обычно, rsync
файлы пропусков, когда файлы имеют идентичные размеры и времена на источнике и целевых сторонах. Это - эвристика, которая обычно является хорошей идеей, как она предотвращает rsync
от необходимости исследовать содержание файлов, которые очень вероятно идентичны на источнике и целевых сторонах.
--ignore-times
говорит rsync
выключить file-times-and-sizes эвристику и таким образом безусловно передать ВСЕ файлы от источника до места назначения. rsync
затем продолжит читать каждый файл на исходной стороне, так как это должно будет или использовать свой алгоритм передачи дельты или просто отправить каждый файл в целом, в зависимости от ли --whole-file
опция была указана.
--checksum
также изменяет file-times-and-sizes эвристику, но здесь она игнорирует времена и исследует только размеры. Файлы на источнике и целевых сторонах, которые отличаются по размеру, передаются, так как они очевидно отличаются. Файлы с тем же размером проверены суммированием (с MD5 в rsync
версия 3.0.0 +, или с MD4 в более ранних версиях), и те, которые, как находят, имели отличающиеся суммы также передаются.
В случаях, где источник и целевые стороны являются главным образом тем же, --checksum
приведет к большинству файлов, являющихся проверенным суммированием с обеих сторон. Это могло занять много времени, но результат - то, что самый голый минимум данных будет на самом деле передан по проводу, особенно если алгоритм передачи дельты будет использоваться. Конечно, это - только победа, если у Вас есть очень медленные сети и/или очень быстрый ЦП.
--ignore-times
, с другой стороны, отправит больше данных по сети, и это заставит все исходные файлы быть считанными, но по крайней мере это не наложит дополнительную нагрузку вычислений многих криптографически сильных hashsums на источнике и целевых центральных процессорах. Я ожидал бы эту опцию работать лучше, чем --checksum
когда Ваши сети быстры, и/или Ваш относительно медленный ЦП.
Я думаю, что только когда-либо использовал бы --checksum
или --ignore-times
если я передавал файлы месту назначения, где подозревалось, что содержание некоторых файлов было повреждено, но чье время изменения не было изменено. Я не могу действительно думать ни о каком другом серьезном основании использовать любую опцию, хотя существуют, вероятно, другие примеры использования.
От info rsync
в отношении --checksum
опция - "Начиная с этого вычисления контрольной суммы целого файла всех файлов с обеих сторон соединения происходит в дополнение к автоматическим проверкам контрольной суммы, которые происходят во время передачи файла, эта опция может быть довольно медленной".
--ignore-times
опция, вероятно, приведет ко всей закодированной дельте файлов, и алгоритм передачи дельты (кодирование дельты) является, по крайней мере, столь же медленным как вычисление контрольной суммы.
Я не знаю если rsync --ignore-times
достаточно умно для предотвращения "автоматической проверки после-того,-как-передачи" в частом случае, когда передача дельты не приведет ни к чему передаваемому.
Для --ignore-times
:
Оба --checksum
и --ignore-times
будет "довольно медленным", но --ignore-times
вероятно, еще медленнее (из-за этих 2 возможностей выше).
Хороший вопрос - отправьте при нахождении каких-либо различий в производительности на практике.
Одна деталь: опция контрольной суммы проверяет весь файл на одном конце, затем весь файл на другом конце. Если ваши файлы несколько большие, это убивает параллелизм.
Кроме того, если у вас большие файлы, вы, скорее всего, столкнетесь с тайм-аутом с - контрольной суммой
, в отличие от -I
.
контрольная сумма также полезна, если вы использовали другую систему для синхронизации файлов, в которой не сохранились метки времени. Контрольная сумма будет транслировать только файлы, которые отличаются И обновлять все временные метки на принимающей стороне так, чтобы они совпадали
.