Эта команда синхронизирует все файлы из /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, затем проверит, остались ли какие-либо файлы, чтобы предотвратить удаление папки, если некоторые файлы были не полностью синхронизированы и, следовательно, не были удалены, а затем либо распечатать, что не все файлы были синхронизированы, либо удалить папку, если она есть. в нем нет файлов