
Quais são os rsync
comandos equivalentes a mv
/a/b/ /c/d/, ou seja, para mover uma árvore de diretórios de um local para outro, possivelmente em outro sistema de arquivos?
Ou seja, não apenas copie, mas exclua os arquivos do local original. O motivo pelo qual desejo usar rsync
é que desejo retomar uma movimentação parcial e limitar o uso da largura de banda.
Responder1
Este comando sincronizará todos os arquivos de /a/b para /c/d e preservará permissões, datas de modificação, links simbólicos e recorrerá aos diretórios, ('-a' ou '--archive' faz tudo isso, é é o mesmo que usar '-rlptgoD', que são opções separadas para tudo isso), -v é para verboso e '--remove-source-files' excluirá os arquivos de origem assim que forem 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ê quiser mover para o servidor remoto, isso será sincronizado com o caminho do servidor remoto, '-z' compactará os dados do arquivo durante a transferência.
rsync -avz --remove-source-files /a/b user@hostname_or_ip:/c/d
Os diretórios não serão removidos por '--remove-source-files', então você precisa executar 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 há arquivos restantes, para evitar a exclusão da pasta se alguns arquivos não estiverem totalmente sincronizados e, portanto, não foram excluídos e, em seguida, imprimirá que nem todos os arquivos foram sincronizados ou excluirá a pasta se houver não há arquivos nele.