rsync --remove-source-files exclui os arquivos de origem um por um ou após a conclusão do rsync?

23

Eu tenho um comando rsync em um aplicativo que copia o conteúdo de uma pasta para outra máquina. Eu tenho a opção --remove-source-filesporque só estou interessado em ter os arquivos na máquina de destino após a conclusão do rsync.

No entanto, eu queria saber como o rsync se comporta se ele falha ou é interrompido durante a transferência de arquivos?

Considere que eu tenho dois arquivos para sincronizar ae b. O rsync copiará a, excluirá da fonte e começará a copiar bou aguardará os dois ae bserá copiado para a máquina de destino antes de excluir os dois? Vi que você pode configurar esse comportamento ao excluir arquivos estranhos com alguns sinalizadores, mas não encontrou nenhum sobre a remoção de arquivos de origem.

Brafales
fonte
semelhante ao stackoverflow.com/questions/7380234/… embora eu ache que o Kyle esteja certo - às vezes parece que o rsync aguarda a conclusão de todos os arquivos, mas às vezes exclui os arquivos antes da conclusão. Ainda um pouco confuso.
Chris2048

Respostas:

16

A verificação do código rsync revela que os arquivos de origem são removidos à medida que são enviados, embora isso possa não acontecer imediatamente. O rsync multiplexa suas operações, para que a mensagem de que um arquivo foi recebido com sucesso (e, portanto, possa ser excluído) possa ser armazenada em buffer atrás de outros dados.

Kyle Jones
fonte
2
De acordo com a minha resposta abaixo, tentei com alguns arquivos, e os arquivos foram excluídos apenas se a operação completa tiver sido bem-sucedida. Isso me faz pensar que o sinal de "transferência OK" encontrado somente é permeado quando a operação completa é bem-sucedida.
Daniel Andersson
5
Se você tentar com mais de alguns arquivos, verá os arquivos de origem desaparecendo antes que toda a transferência seja concluída.
Kyle Jones
parece que ao especificar diretórios e a opção recursiva, arquivos em um não são apagados imediatamente
Andre Holzner
4

Eu tentei (e você poderia facilmente fazer isso também, com certeza). Eles são removidos depois que todos os arquivos são transferidos com sucesso. Se a transferência for interrompida ou ocorrer outro erro, os arquivos de origem não serão removidos, mesmo que alguns deles tenham sido transferidos OK.

EDIT: de acordo com a resposta de Kyle Jones, o caso pode ser diferente quando há muitos arquivos envolvidos.

Daniel Andersson
fonte