Quais são os comandos equivalentes do rsync para mv /a/b /c/d?

Quais são os comandos equivalentes do rsync para mv /a/b /c/d?

Quais são os rsynccomandos 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.

informação relacionada