Что касается rsync
, то вы копируете между двумя локальными файловыми деревьями, поэтому он отключает большинство своих оптимизаций (, включая дельта-алгоритм, которым он известен ). Если вы можете запустить rsync
на своем удаленном сервере (, чтобы получить реальный клиентский -серверный сценарий в вашей сети ), вы получите значительную поддержку.
Тем не менее, есть и другие варианты для рассмотрения
Копирование, не беспокоясь об удалении старых файлов. Это может позволить вам чаще выполнять более быструю передачу и сократить более медленную очистку до одного раза в день :
.cp -au /mnt/ROUTER_WD_2TB/. /mnt/BACKUP_HITACHI_2TB/
Используйте вариант алгоритма удаления rsync
по умолчанию, чтобы избежать создания полного списка файлов перед передачей:
rsync -haAXi --quiet --delete --delete-during /mnt/ROUTER_WD_2TB/ /mnt/BACKUP_HITACHI_2TB/
Разделите каталоги верхнего -уровня на отдельные задачи и запускайте их параллельно. Вы можете обнаружить, что если вы привязаны к дисковому вводу-выводу -, то это на самом деле не поможет, а для вращающихся дисков это почти наверняка усугубит ситуацию.
for d in /mnt/ROUTER_WD_2TB/*
do
rsync -haAXi --quiet --delete --delete-during "$d" /mnt/BACKUP_HITACHI_2TB/ >"/tmp/rsync.${d/*\/}.log" 2>&1 &
done
wait
cat /tmp/rsync.*.log
rm -f /tmp/rsync.*.log
Если ни одно из этих предложений не помогает, то стоит добавить еще одно --verbose
к rsync
, чтобы посмотреть, что оно делает. Я подозреваю, что он перебирает все неизмененные файлы, и если у вас достаточно файлов, это просто занимает много времени.