Обычно, 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
выдает что-то неожиданное, поэтому я знаю, что есть потенциальная проблема, которую я должен изучить--ignore-times
и особенно--checksum
необходимы, если один из ваших «файлов» является контейнером файлов Truecrypt, поскольку по умолчанию временная метка файла не обновляется. См. Productforums.google.com/forum/#!topic/drive/gnmDp3UXEgs и ask-leo.com/why_wont_my_truecrypt_volume_backup.html--checksum
контрольная сумма только исходные имена файлов на конечном компьютере или все файлы в конечном каталоге?Контрольная сумма также полезна, если вы использовали другую систему для синхронизации файлов, которые не сохранили метки времени. Контрольная сумма будет только передавать файлы, которые отличаются и обновлять все временные метки на принимающей стороне, чтобы они соответствовали
источник
Одна деталь: опция контрольной суммы проверяет весь файл на одном конце, а затем весь файл на другом конце. Если ваши файлы несколько большие, это убивает параллелизм.
Кроме того, если у вас есть огромные файлы, вы, скорее всего, столкнетесь с тайм-аутом
--checksum
, а не с-I
.источник
С
info rsync
в отношении к--checksum
опции - «Поскольку весь этот-файл контрольной суммы всех файлов на обеих сторонах соединения происходит в дополнение к автоматической проверки контрольных сумм , которые происходят во время передачи файла, эта опция может быть довольно медленным.»источник
Эта
--ignore-times
опция, вероятно, приведет к тому, что все файлы будут закодированы дельтой, а алгоритм дельта-передачи (дельта-кодирование) будет по меньшей мере таким же медленным, как контрольная сумма.Я не знаю, достаточно ли
--ignore-times
умен rsync , чтобы избежать «автоматической проверки после передачи» в частом случае, когда дельта-передача не приводит к передаче.Для
--ignore-times
:И то,
--checksum
и другое--ignore-times
будет «довольно медленным», но--ignore-times
, вероятно, будет даже медленнее (из-за 2 возможностей выше).Хороший вопрос - пожалуйста, напишите, если вы обнаружите какие-либо различия в производительности на практике.
источник