Назад | Перейти на главную страницу

rsync копирует неизмененные файлы между разными файловыми системами

Я пытаюсь синхронизировать файлы между двумя машинами с помощью rsync, но кажется, что копируются все файлы независимо от времени изменения файла. Два последовательных вызова команды дают одинаковые результаты, поэтому она явно нарушена.

Рассматриваемая команда:

rsync -r local/path user@host:/remote/path -v

Локальная файловая система - ext4, а удаленная - ext3. Я подозреваю, что проблема здесь, так как у меня были похожие проблемы, когда я пытался синхронизировать файлы между той же системой ext3 и диском NTFS. Конвертация последнего в ext3 решила проблему.

На этот раз я не могу прибегнуть к конверсии. Кто-нибудь знает точный источник проблемы и возможные решения?

rsync по умолчанию не копирует файлы в зависимости от времени их модификации и размера.

Если вы не используете -t в командной строке rsync не сохранит время модификации, и проверка размера + времени, конечно же, завершится ошибкой.

Также существует большая вероятность, что точность временных меток ваших разных файловых систем вызывает проблему - ext4 поддерживает микросекунды, в то время как ext3 ограничено секундами.

Попробуйте добавить --modify-window=1 в командную строку, чтобы rsync обрабатывал временные метки с точностью до одной секунды.

В качестве альтернативы вы можете дать ему -c для принудительного подсчета контрольных сумм файлов, но это, конечно, будет намного медленнее, чем проверка размера mtime +, даже если это сэкономит вам полосу пропускания.