Reutilizar o rsync - saída run -dry

19

Eu geralmente faço rsync -n antes de fazer um rsync real. O problema é, como eu poderia automatizar a segunda execução para reutilizar exatamente a lista gerada com --dry-run ?

Quero dizer, se eu executar rsync -n , eu obtenho uma simulação do que rsync faria, minha ideia seria pegar essa saída, processá-la e então fazer rsync only --include-from dessa saída, então a lista completa deve ser calculada apenas uma vez.

Se isso não fizer sentido, por favor, me avise.

A propósito, eu costumo usar rsync -hva --progress --stats --delete --exclude-from "$EXCLUDEFILE" . Se você também tem uma sugestão sobre quais opções você usaria, por favor, me avise. Estou tentando duplicar o conteúdo de um disco rígido externo (que contém apenas imagens, vídeos e documentos) para outro disco rígido externo.

    
por Manuel 07.02.2016 / 19:24

1 resposta

17

É certamente possível usar a lista de arquivos gerada durante uma execução a seco como um arquivo de inclusão. Idealmente, no entanto, as linhas extras na parte superior e inferior da saída de funcionamento a seco devem ser excluídas.

Exemplo de saída:

sending incremental file list
[LIST OF FILES]

sent 226 bytes  received 34 bytes  520.00 bytes/sec
total size is 648,373,274  speedup is 2,493,743.36 (DRY RUN)

Para remover essas linhas, canalize a saída rsync para head e para tail . Em seguida, salve a saída processada em um arquivo de inclusão:

rsync --dry-run -avz source/ destination/ | head --lines=-3 | tail --lines=+3 > include.txt

Por fim, informe rsync para usar o arquivo de inclusão gerado (adicionando opções adicionais conforme desejado):

rsync --include-from=include.txt --exclude=* source/ dest/

    
por 10.02.2016 / 23:02