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

Странное поведение rsync

Итак, я начинаю со сравнения двух каталогов:

[root@135759 ]# rsync -av test1/ test2/
building file list ... done

sent 128 bytes  received 20 bytes  296.00 bytes/sec
total size is 6  speedup is 0.04

Они оба синхронизированы. Теперь позвольте мне создать файл в test1 и скопировать его в test2.

[root@135759 ]# touch test1/hello4.php
[root@135759 ]# scp test1/hello4.php  test2/hello4.php

Я подтверждаю, что это то же самое:

[root@135759 test2]# md5sum test1/hello4.php
d41d8cd98f00b204e9800998ecf8427e  hello4.php

[root@135759 test1]# md5sum test2/hello4.php
d41d8cd98f00b204e9800998ecf8427e  hello4.php

Таким образом, запуск rsync покажет мне 0 файлов. Почему вывод не тот?

[root@135759 ]# rsync -avn test1/ test2/
building file list ... done
hello4.php

sent 116 bytes  received 24 bytes  280.00 bytes/sec
total size is 6  speedup is 0.04

Содержимое файла такое же, поэтому rsyinc отправляет очень мало данных. Но я подозреваю, что некоторые метаданные в файлах отличаются. Я предполагаю, что создание по сравнению с измененными отметками времени, возможно, основано на вашем примере. Проверьте их перед повторным запуском rsync. Когда rysnc видит разные временные метки, он выполняет «передачу» этого файла, даже если не задействованы никакие данные файла, а только метаданные.

rsync по умолчанию выполняет «быстрые» сравнения по времени и размеру файла; даже дрейф локальных часов может иногда вызывать проблемы с этим, поэтому, если вам действительно нужно знать, что файлы абсолютно идентичны, прежде чем вы решите пропустить их для передачи, используйте rsync --checksum опция, которая будет проверять сумму файла на каждом конце и сравнивать результаты. Имейте в виду, что для операций с большими файлами, или с большим количеством файлов, или с тем и другим, этот параметр может потребовать значительных ресурсов ЦП и значительно увеличить время, необходимое для синхронизации.