Я использую rsync для копирования данных с локального LVM-диска на локально смонтированный модуль glusterfs. Я пытаюсь привести их в синхронизацию и в конечном итоге перехожу к использованию просто крепления glusterfs. Вот команда, которую я использую:
rsync -av --inplace --no-whole-file /mnt/lvm-ext4/ /mnt/gluster
В настоящее время у меня есть начальный толчок данных, и теперь я пытаюсь наверстать упущенное с новыми добавленными файлами. Том LVM в настоящее время содержит около 14 ТБ данных и около 25 миллионов небольших файлов, но я думаю, что rsync страдает от такого количества файлов.
Наблюдая за результатами этого второго прогона, я вижу, что большинство записей, выводимых rsync, являются записями каталогов с небольшим набором фактических файлов, перемещаемых. Я считаю, что это связано с тем, что каталоги были затронуты, и их время было обновлено, поэтому rsync должен обновить их на удаленной стороне. Я недавно узнал о опции монтирования nodiratime и применил ее сегодня, надеюсь, это поможет с будущими синхронизациями.
Есть ли способ заставить rsync игнорировать эти обновления каталогов и передавать только новые / измененные файлы или новые каталоги? Я видел варианты --ignore-times и --checksum, но они, похоже, включают все.
Я не думаю, что ваша проблема действительно связана с отметкой времени каталога.
При таком большом количестве данных rsync просто потребуется некоторое время, чтобы обнаружить измененные файлы и начать их передачу. Если тем временем он обнаруживает изменение каталога / m / ctime, он реплицирует это изменение на стороне получателя, но это должно происходить почти мгновенно.