Quais são as diferenças entre as opções de exclusão do rsync?

101

Eu vejo na página do manual do rsync que há um número de delete opções, mas realmente não entendo as diferenças entre eles. Quais são as diferenças entre essas opções?

 --del                   an alias for --delete-during
 --delete                delete extraneous files from dest dirs
 --delete-before         receiver deletes before transfer (default)
 --delete-during         receiver deletes during xfer, not before
 --delete-delay          find deletions during, delete after
 --delete-after          receiver deletes after transfer, not before
 --delete-excluded       also delete excluded files from dest dirs
    
por Skilldrick 25.06.2010 / 14:29

3 respostas

101
  • --del/--delete_during : Exclui arquivos do diretório de destino quando são copiados (economiza memória em comparação com --delete-before : --delete-before faz uma verificação separada para procurar deletáveis)

  • --delete : Exclui arquivos no diretório de destino, se eles não existirem no diretório de origem.

  • --delete-before : exclua os arquivos no diretório de destino antes de copiar o arquivo com o mesmo nome do diretório de origem

  • --delete-during : Exclua arquivos no diretório de destino ENQUANTO copie o arquivo com o mesmo nome do diretório de origem

  • --delete-delay : Marcar exclusões durante a transferência, mas aguarde até que a transferência esteja concluída

  • --delete-after : O receptor exclui após a transferência, não antes ... Se alguma outra parte do rsync mover arquivos extras em outro lugar, você desejará isso em vez de --delete-delay , porque --delete-delay decide o que é vai apagar no meio da transferência, enquanto --delete-after verifica o diretório de arquivos que devem ser apagados DEPOIS que tudo esteja terminado.

  • --delete-excluded : exclui arquivos do diretório de destino que são explicitamente excluídos da transferência do diretório de origem.

O ponto do rsync não está copiando, está arquivando. Esta é uma distinção importante. O processamento de arquivos excluídos / alterados é fundamental e, em muitos casos, com nuances.

A bandeira --delete , em particular, é uma que vi várias vezes. Muitas pessoas usam o rsync para mover arquivos para o armazenamento de baixa prioridade e, nesse caso, você deseja que os arquivos que você está movendo ainda EXISTEM no diretório de destino. Isso não é o que a exclusão faz: --delete garante que, quando você apaga um arquivo do diretório de origem, ele também é excluído do seu diretório de destino, para que seu destino não fique cheio de lixo ... o seu backup, colocando em uma nova unidade, e não desligar o seu script rsync noturno. O script viu que o diretório de origem estava vazio e excluiu todos os arquivos no diretório de destino para que eles correspondessem.

A maioria das outras opções é relacionada a espaço ou desempenho. Quando você excluir os arquivos é importante se você quiser ter certeza de que a transferência é bem sucedida antes de fazer qualquer coisa, mas se o seu dispositivo é muito pequeno para lidar com 2 cópias de todas as informações, você precisa excluir, etc. pouco maluco por causa de sua longa história em várias plataformas: algumas opções foram adicionadas para que as pessoas acostumadas a certos comportamentos não sejam confundidas.

    
por 25.06.2010 / 16:19
1

Há duas coisas acontecendo:

  1. Quem faz a exclusão
  2. Quando acontece

O remetente ou o destinatário podem ser instruídos a fazer a exclusão (não sei por que isso é importante). Portanto, quando o rsync de um computador se conecta ao servidor rsync do outro lado, isso determina quem está efetivamente emitindo o comando delete.

Quando isso acontece é bem fácil ... antes significa que todos os arquivos foram apagados e, ENTÃO, o rsync copiou os arquivos. durante significa que, ao percorrer a lista de arquivos, ele os exclui quando se trata deles e depois significa que aguarda até que todos os arquivos sejam transferidos e, em seguida, exclua o lado remoto. Isso é importante apenas quando a transferência é interrompida.

    
por 25.06.2010 / 14:57
1

Um outro ponto que vale a pena mencionar é que, se o diretório de origem terminar com /* , o rsync só considerará esses arquivos e não o próprio diretório (e, portanto, a ausência de arquivos que você deseja excluir) no destino).

Se você estiver especificando uma opção de exclusão acima, mas parece que o rsync não está sendo excluído, verifique se você não está acumulando acidentalmente e fornecendo uma lista de arquivos quando se refere ao próprio diretório.

    
por 17.01.2013 / 19:50

Tags