Мне было довольно трудно понять ваши более ранние итерации этого вопроса, поэтому я собираюсь повторить упрощенную версию того, что, как я думаю, вы имеете в виду, вместе с соответствующим рабочим примером:
Структура
C:\iMazing\Backups\
AL\
files...
BL\
files...
iMazing.Versions\Versions\
AH\
files...
BH\
S:\ExtHDD\APPLE\iMazing.Backups\
AL\
destination files...
BL\
destination files...
iMazing.Versions\Versions\
AH\
destination files...
BH\
destination files...
Требуется скопировать AL\...
и AH\...
из C:
в S:
, сохранив жесткие ссылки и относительную структуру.
Рабочий пример
mkdir -p iMazing/Backups/{AL,BL,iMazing.Versions/Versions/{AH,BH}} ExtHDD/APPLE/iMazing.Backups
touch iMazing/Backups/{AL/albackup,BL/blbackup}
touch iMazing/Backups/iMazing.Versions/Versions/{AH/ahbackup,BH/bhbackup}
В этот момент вы можете ls -R
или find
посмотреть, что я сделал. В каталогах AL
, AH
, BL
и BH
должны быть файлы albackup
, ahbackup
, blbackup
и bhbackup
. Мы собираемся скопировать каталоги AL
и AH
в цель :
rsync --dry-run -avHPR iMazing/Backups/./AL iMazing/Backups/./iMazing.Versions/Versions/AH ExtHDD/APPLE/iMazing.Backups/
Флаг-R
(--relative
)сохраняет исходный путь (с )от маркера /./
. В примере это означает, что iMazing/Backups/
удаляется, а остаток добавляется к пути назначения.
После удаления--dry-run
(-n
)файлы и каталоги из исходных каталогов AL и AH будут скопированы в целевой каталог с сохранением внутренних жестких ссылок и структуры.
Решение вопроса
Поскольку это Cygwin, вам нужно использовать косую черту и пути, начинающиеся с /cygdrive/{DriveLetter}
. Для сохранения ссылок необходимо включить флаг -H
(--hard-links
).
rsync -aHR /cygdrive/C/iMazing/Backups/./AL /cygdrive/C/iMazing/Backups/./iMazing.Versions/Versions/AH /cygdrive/ExtHDD/APPLE/iMazing.Backups/
Вы можете включить флаги-v
(--verbose
)и/или -P
(--partial --progress
), если хотите видеть, что происходит. В этой ситуации rsync
не будет беспокоить свой печально известный «дельта»-алгоритм или сжатие (, они работают только тогда, когда в сети )задействованы два сервера rsync
клиент -серверная конфигурация ). Если бы вы могли запустить экземпляр rsync
на сервере, на котором размещен ваш диск S :, это было бы намного эффективнее.
Добавьте --dry-run
, чтобы увидеть, что произойдет, если он ничего не сделает.
Да, вы просто подсчитываете пропущенные пинги и умножаете их на интервал пингов, который вы можете явно установить с помощью флага -i
. Это так же хорошо, как и оценка.