Uso da opção --remove-source-files do rsync

2

Na página de manual de rsync

--remove-source-files

This tells rsync to remove from the sending side the files (meaning non-directories) that are a part of the transfer and have been successfully duplicated on the receiving side.

  • Significa arquivos no lado de envio que fazem parte da transferência ou são duplicados no lado de recebimento?

  • Também posso remover diretórios no lado de envio?

Note that you should only use this option on source files that are quiescent.

  • O que significa "arquivos de origem que estão inativos"?

If you are using this to move files that show up in a particular directory over to another host, make sure that the finished files get renamed into the source directory, not directly written into it, so that rsync can't possibly transfer a file that is not yet fully written.

  • O que isso significa?

If you can't first write the files into a different directory, you should use a naming idiom that lets rsync avoid transferring files that are not yet finished (e.g. name the file "foo.new" when it is written, rename it to "foo" when it is done, and then use the option --exclude='*.new' for the rsync transfer).

  • O que isso significa?

Starting with 3.1.0, rsync will skip the sender-side removal (and output an error) if the file's size or modify time has not stayed unchanged.

  • O que isso significa?

Obrigado.

    
por Tim 14.06.2017 / 19:01

1 resposta

2

P: Isso significa arquivos no lado de envio que são parte da transferência ou duplicados no lado de recebimento?

  • A: Ambos

P: Também posso remover diretórios no lado de envio?

  • A: Sim

--remove-source-files , em seguida, emita o comando rm -rf <source_directory>

P: O que significa "arquivos de origem que estão inativos"?

  • R: Isso significa que os arquivos que foram gravados e fechados

P: Se você estiver usando isso para mover arquivos exibidos em um diretório específico para outro host, certifique-se de que os arquivos concluídos sejam renomeados para o diretório de origem, não gravados diretamente nele, para que o rsync não seja possivelmente transferir um arquivo que ainda não esteja totalmente gravado. O que isso significa?

  • R: Significa exatamente o que eu disse acima

Q: Se você não pode primeiro escrever os arquivos em um diretório diferente, você deve usar uma linguagem de nomeação que permita ao rsync evitar a transferência de arquivos que ainda não estão finalizados (por exemplo, nomeie o arquivo "foo.new" quando estiver escrito , renomeie para "foo" quando estiver pronto, e então use a opção --exclude = '*. new' para a transferência rsync). O que isso significa?

  • A: Significa que o RSYNC faz uma lista dos arquivos a serem transferidos primeiro. Em seguida, ele os grava em um diretório diferente (Diretório de Destino), portanto, se você transferir um arquivo que não foi concluído, é melhor renomeá-lo depois de feito usando a opção --exclude

Q: A partir do 3.1.0, o rsync irá ignorar a remoção do remetente (e produzir um erro) se o tamanho do arquivo ou o tempo de modificação não permanecerem inalterados. O que isso significa?

  • R: Se o RSYNC detectar que, quando estiver prestes a gravar o arquivo no diretório de destino, que o tamanho do arquivo foi alterado entre o momento em que foi digitalizado, até o momento em que é gravado no diretório de destino, RSYNC irá pular o arquivo.
por 14.06.2017 / 19:27

Tags