/ bin / sh
не всегда является символической ссылкой NetBSD - это та система, в которой / bin / sh
не является символической ссылкой. Установка по умолчанию включает три оболочки: оболочку Korn, оболочку C и модифицированную оболочку Almquist. Из них последний устанавливается только как / bin / sh
.
Interix (вторая подсистема POSIX для Windows NT) не имеет / bin / sh
в качестве символической ссылки.Один двоичный файл оболочки MirBSD Korn связан дважды как / bin / sh
и / bin / mksh
.
FreeBSD и производная от нее TrueOS (ранее PC-BSD) имеют оболочку TENEX C как / bin / csh
и / bin / tcsh
, так и оболочку Almquist как (только ) / bin / sh
. Там тоже нет символической ссылки.
OpenBSD имеет (исходную) оболочку C как / bin / csh
и оболочку PD Korn, связанную трижды как / bin / sh
, / bin / ksh
] и / bin / rksh
. Также нет символической ссылки.
Что касается 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
, чтобы посмотреть, что оно делает. Я подозреваю, что он перебирает все неизмененные файлы, и если у вас достаточно файлов, это просто занимает много времени.