Я пытаюсь перенести тысячи маленьких файлов с одного сервера на другой, используя следующую команду:
rsync -zr --delete /home/user/ user@10.1.1.1::backup
В настоящее время перевод занимает много времени (я не рассчитал это). Есть ли способ сделать это быстрее? Должен ли я использовать другой инструмент? Должен ли я использовать rsync через ssh, а не протокол rsync?
stat()
.-a
но-r
?Ответы:
Вам нужно определить узкое место. Это не Rsync. Вероятно, это не ваша пропускная способность сети. Как сказал @Zoredache, это, скорее всего, огромное количество iops, генерируемых всеми
stat()
вызовами. Любой инструмент синхронизации будет нуждаться в статистике файлов. Во время синхронизации запустить,iostat
чтобы проверить.Так возникает вопрос; как оптимизировать стат? Два простых ответа:
noatime
и добавьте adir_index
).Если по какой-то причине пределом является не размер iops диска, вы можете поэкспериментировать с разбиением дерева каталогов на несколько разных деревьев и запустить несколько rsyncs.
источник
Сжатие не очень полезно для небольших файлов (скажем, менее 100 байт). Для небольших файлов иногда сжатая версия может быть даже больше оригинальной. Попробуйте
rsync
команду без-z
флага.ssh
это хорошо для безопасности, но не сделает передачу быстрее. Фактически, это замедлит передачу из-за необходимости шифрования / дешифрования.rsync
может показаться не быстрым при первом запуске, потому что есть много данных для передачи. Однако, если вы планируете периодически запускать эту команду, последующие запуски могут быть намного быстрее, такrsync
как разумно не передавать файлы, которые не были изменены.источник
rsync
клиент, он будет использовать SSH за кулисами. Вы должны изо всех сил отключить шифрование при использовании rsync. См .: stackoverflow.com/a/1821574/64911Какую версию rsync вы используете? Все, что старше 3.0.0 (на обоих концах), не имеет функции добавочного списка файлов, что ускоряет большие передачи.
источник
Добавьте
-v --progress
к своей командной строке rsyncrsync выполняется в 2 этапа:
Если вы используете rsync тысячи маленьких файлов во вложенных каталогах, то может случиться так, что rsync тратит большую часть этого времени, уходя в подкаталоги и находя все файлы.
Если время не тратится на просмотр, оно может быть просто из-за добавления всех задержек, начинающих каждую новую передачу файла.
источник
В случае, когда задействованы файловые системы ext3 или ext4, убедитесь, что в обеих функциях dir_index включена! Это утроило пропускную способность rsync в моем случае.
Подробности см. В моем ответе по адресу: /server//a/759421/80414
источник