Я бы настоятельно не рекомендовал никому использовать принятый ответ, лучшее решение — просканировать каталог верхнего уровня и запустить пропорциональное количество операций rync.
У меня есть большой том zfs, и моим источником было монтирование cifs. Оба связаны с 10G, и в некоторых тестах может насытить связь. Производительность оценивалась с использованием zpool iostat 1
.
Исходный диск был смонтирован следующим образом:
mount -t cifs -o username=,password= //static_ip/70tb /mnt/Datahoarder_Mount/ -o vers=3.0
С использованием одного процесса rsync
:
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/ /StoragePod
показания счетчика ввода-вывода:
StoragePod 30.0T 144T 0 1.61K 0 130M
StoragePod 30.0T 144T 0 1.61K 0 130M
StoragePod 30.0T 144T 0 1.62K 0 130M
Это в синтетических тестах (кристаллический диск), производительность при последовательной записи 900 МБ/с, что означает, что ссылка перегружена. 130мб/с это не очень хорошо, а разница между ожиданием выходных и двух недель.
Итак, я создал список файлов и попытался снова запустить синхронизацию (у меня 64-ядерный компьютер):
cat /home/misha/Desktop/rsync_logs_syncs/Datahoarder_Mount.log | parallel --will-cite -j 16 rsync -avzm --relative --stats --safe-links --size-only --human-readable {} /StoragePod/ > /home/misha/Desktop/rsync_logs_syncs/Datahoarder_Mount_result.log
и производительность была такой же!
StoragePod 29.9T 144T 0 1.63K 0 130M
StoragePod 29.9T 144T 0 1.62K 0 130M
StoragePod 29.9T 144T 0 1.56K 0 129M
В качестве альтернативы я просто запустил rsync для корневых папок:
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/Marcello_zinc_bone /StoragePod/Marcello_zinc_bone
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/fibroblast_growth /StoragePod/fibroblast_growth
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/QDIC /StoragePod/QDIC
rsync -h -v -r -P -t /mnt/Datahoarder_Mount/Mikhail/sexy_dps_cell /StoragePod/sexy_dps_cell
Это фактически повысило производительность:
StoragePod 30.1T 144T 13 3.66K 112K 343M
StoragePod 30.1T 144T 24 5.11K 184K 469M
StoragePod 30.1T 144T 25 4.30K 196K 373M
В заключение, как сказал @Sandip Bhattacharya, напишите небольшой скрипт для получения каталогов и параллельного выполнения. Либо передайте список файлов в rsync. Но не создавайте новые экземпляры для каждого файла.
--infected
работает только для печати сводки, если, конечно, у вас нет зараженных файлов