Este comando irá sincronizar todos os arquivos de / a / b para / c / d, e preservará permissões, datas de modificação, links simbólicos, e irá recursar para os diretórios, ('-a' ou '--archive' faz tudo é o mesmo que usar '-rlptgoD', que são opções separadas para tudo isso), -v é para verbose e '--remove-source-files' excluirá os arquivos de origem depois de serem totalmente criados no destino .
Se o diretório d dentro de / c / não existir, ele será criado.
rsync -av --remove-source-files /a/b /c/d
Se você deseja mover para o servidor remoto, isso sincronizará com o caminho do servidor remoto, '-z' comprimirá os dados do arquivo durante a transferência.
rsync -avz --remove-source-files /a/b user@hostname_or_ip:/c/d
Diretórios não serão removidos por '--remove-source-files', então você precisa rodar rm -rf / a / b após o rsync para remover todos os diretórios dentro de / a / b /
Em um comando de linha, você pode colocar tudo assim
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
Isso executará o rsync e, em seguida, verificará se ainda existem arquivos, para evitar a exclusão da pasta se alguns arquivos não tiverem sido totalmente sincronizados e, portanto, não tiverem sido excluídos e depois imprimir que nem todos os arquivos foram sincronizados ou excluir pasta se não houver arquivos.