2

Какие команды rsync эквивалентны /s для mv /a /b / / c / d /, т. Е. Для перемещения дерева каталогов из одного места в другое, возможно, в другую файловую систему?

То есть не просто скопировать, а удалить файлы из исходного местоположения. Причина, по которой я хочу использовать rsync заключается в том, что я хочу возобновить частичное перемещение и ограничить использование полосы пропускания.

1 ответ1

2

Эта команда синхронизирует все файлы из /a /b в /c /d и сохранит права доступа, даты модификации, символические ссылки и вернется в каталоги («-a» или «--archive» делает все это, аналогично использованию '-rlptgoD' (это отдельные параметры для всего этого), -v для многословия, а '--remove-source-files' удалит исходные файлы, как только они будут полностью созданы в месте назначения.

Если каталог d внутри /c / не существует, он будет создан.

rsync -av --remove-source-files /a/b /c/d

Если вы хотите перейти на удаленный сервер, это синхронизирует путь к удаленному серверу, '-z' сжимает данные файла во время передачи.

rsync -avz --remove-source-files /a/b user@hostname_or_ip:/c/d

Каталоги не удаляются с помощью '--remove-source-files', поэтому вам нужно запустить rm -rf /a /b после rsync, чтобы удалить все каталоги внутри /a /b /

В одну строку команды вы можете поместить все это так

rsync -av --remove-source-files /a/b /c/d; if find /a/b/ -type f | read; then echo "Not all files were synced"; else rm -rf /a/b; fi

Это запустит rsync, затем проверит, остались ли какие-либо файлы, чтобы предотвратить удаление папки, если некоторые файлы были не полностью синхронизированы и, следовательно, не были удалены, а затем либо распечатать, что не все файлы были синхронизированы, либо удалить папку, если она есть. в нем нет файлов

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .