Я хочу переместить некоторые файлы с помощью rsync, но перед удалением исходных файлов важно, чтобы файлы не были повреждены в месте назначения. Дело в том, что я не могу найти никакой информации, говорящей мне, как rsync решает, что файл был передан правильно: мне нужно, чтобы он правильно просчитал контрольную сумму. Кто-нибудь знает, как это делает rsync?
Вам необходимо пройти --checksum
чтобы файлы с одинаковым размером и временем в источнике и месте назначения не пропускались. Тогда согласно Википедия:
Получатель разбивает свою копию файла на неперекрывающиеся фрагменты фиксированного размера и вычисляет две контрольные суммы для каждого фрагмента: хэш MD4 и более слабую «скользящую контрольную сумму». (Версия 30 протокола, выпущенная с rsync версии 3.0.0, теперь использует хеши MD5, а не MD4. [14]) Он отправляет эти контрольные суммы отправителю.
Раздел о --checksum
в man-странице говорится, что rsync всегда проверяет ckecksum полученного файла, чтобы считать его завершенным (даже если --checksum
не используется):
Обратите внимание, что rsync всегда проверяет, что каждый переданный файл был правильно восстановлен на принимающей стороне, проверяя контрольную сумму всего файла, которая генерируется при передаче файла, но эта автоматическая проверка после передачи не имеет ничего общего с этой опцией до- the-transfer "Нужно ли обновлять этот файл?" чек.