Rsync e certificando-se de que todos os arquivos foram transferidos antes de aplicar as alterações

5

Eu queria saber se existe uma maneira de dizer ao rsync para aplicar somente alterações (excluir, sobrescrever, criar) somente se todos os arquivos da lista de arquivos forem transferidos com sucesso.

Só para esclarecer, isso essencialmente seria colocar uma transação em torno da transferência.

    
por Tres 15.11.2010 / 01:51

3 respostas

4

você pode usar um sistema de arquivos (btrfs, zfs) com recursos de instantâneo:

  • tire uma foto do seu estado atual
  • rsync
  • verificar o código de saída do rsync e reverter, se necessário

você também pode inscrever seus próprios instantâneos:

  • faça uma cópia dos arquivos (isso se torna a área de trabalho)
  • rsync para a área de trabalho
  • verifique o código de saída do rsync e mova a área de trabalho sobre os arquivos originais se o código de saída estiver correto.
por 15.11.2010 / 02:10
3

Você poderia usar a opção --delay-updates , ou se você quiser realmente atualizações atômicas, o script atomic-rsync (incluído no Debian como /usr/share/doc/rsync/scripts/atomic-rsync.gz ).

    
por 16.11.2010 / 07:20
2

Nas páginas man do 'rsync', você pode ter sorte somente para exclusões:

Some options require rsync to know the full file list, so these options disable the incremental recursion mode. These include: --delete-before, --delete-after, --prune-empty-dirs, and --delay-updates. Because of this, the default delete mode when you specify --delete is now --delete-during when both ends of the connection are at least 3.0.0 (use --del or --delete-during to request this improved deletion mode explicitly). See also the --delete-delay option that is a better choice than using --delete-after.

    
por 15.11.2010 / 02:11

Tags