Итак, я начинаю со сравнения двух каталогов:
[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
опция, которая будет проверять сумму файла на каждом конце и сравнивать результаты. Имейте в виду, что для операций с большими файлами, или с большим количеством файлов, или с тем и другим, этот параметр может потребовать значительных ресурсов ЦП и значительно увеличить время, необходимое для синхронизации.