Я использую rsync 3.1.1 для синхронизации двух дисков, один из которых находится в сети и подключен как общий ресурс samba /mnt/ROUTER_WD_2TB/
. Это источник со скоростью 30-40 МБ / с из-за ограничений сети. Другой, пункт назначения, установлен локально (пик 110 МБ / с) и является /mnt/BACKUP_HITACHI_2TB/
.
Я использую следующую команду rsync:
rsync -haAXi --quiet --append-verify --delete /mnt/ROUTER_WD_2TB/* /mnt/BACKUP_HITACHI_2TB/.
Диски содержат много файлов, большинство из них небольшие.
Проблема в том, что rsync занимает довольно много времени (10-20м), прежде чем начать перемещать какие-либо файлы, я полагаю, потому что он должен вычислять списки файлов для очень большого количества маленьких файлов. В течение этого периода загрузка нового устройства составляет 200-500 КБ / с, тогда как при передаче файлов скорость составляет около 40 МБ / с.
Обычно случается, что rsync занимает около 15 м, чтобы наконец найти то, что ему нужно скопировать, затем 5 секунд, чтобы скопировать его, затем продолжает проверку других файлов для копирования еще 5 минут. В итоге, 5-секундная копия файла длится 20 минут!
Могу ли я предпринять какие-либо меры, чтобы избежать этого длительного периода перед копированием файлов, кроме исключения папок? Любой вид «кеша», который я могу реализовать, чтобы rsync не перестраивал весь список файлов с нуля?
Ответы:
Что
rsync
касается того, что вы копируете между двумя локальными файловыми деревьями, то он отключает большинство своих оптимизаций (включая дельта-алгоритм, которым он известен). Если вы сможете запуститьrsync
на своем удаленном сервере (так что вы получите истинный сценарий клиент-сервер по всей вашей сети), вы получите значительную поддержку.Тем не менее, здесь есть другие варианты, чтобы рассмотреть
Копирование, не беспокоясь об удалении старых файлов. Это может позволить вам выполнять более быструю передачу чаще и откладывать более медленную очистку, скажем, раз в день:
Используйте вариант
rsync
алгоритма удаления по умолчанию, чтобы избежать создания полного списка файлов перед передачей:Разделите каталоги верхнего уровня на отдельные задачи и выполняйте их параллельно. Вы можете обнаружить, что если вы привязаны к дисковым IO, то это не очень поможет, а для вращающихся дисков это почти наверняка ухудшит ситуацию.
Если ни одно из этих предложений не помогает , то это стоило бы добавить еще один ,
--verbose
чтобыrsync
посмотреть , что он делает. Я подозреваю, что он дребезжит через все неизмененные файлы, и если у вас достаточно файлов, это просто займет много времени.источник
--delete --delete-during
не сделал это для меня - это все еще отправляло добавочный список файлов - но--delete --delete-before
пошло прямо к:,building file list
что кажется значительным прогрессом. Я думаю.--delete-before
, тоrsync
выполняет два прохода по дереву файлов: один для удаления, а другой для копирования.Вы можете использовать,
-vv
чтобы увидеть весь журналrsync
.источник