Como obter o rsync para não imprimir diretórios

5

Eu uso o rsync para criar backups em um disco rígido externo. Eu costumo executar uma corrida a seco primeiro apenas para verificação de sanidade. Especificamente, vou usar

rsync -auvn path/to/source path/to/dest

No entanto, isso imprime todos os diretórios recursivos, independentemente de ele ou algum de seus arquivos precisar ser copiado. Como estou fazendo o backup de uma grande estrutura de arquivos, isso imprime centenas de diretórios e, normalmente, há apenas alguns arquivos que precisam ser copiados. Assim, essa saída não é ideal e exige que eu vasculhe centenas de linhas de saída desnecessária para realmente fazer minha verificação de sanidade.

Eu adoraria poder dizer para imprimir apenas as operações reais a serem realizadas. Minha solução atual é | grep '\.' , mas obviamente isso não é um filtro perfeito.

Existe alguma maneira de obter o modo de execução a seco do rsync para não imprimir diretórios?

    
por Andrew Schwartz 10.06.2016 / 13:32

1 resposta

5

Costumo usar o rsync para sincronizar as estruturas de diretório e gostar de fazer uma execução a seco antes de executar o comando real. Eu também fico irritado com a impressão dos nomes dos diretórios, então eu uso grep para filtrá-los.

Uma diferença entre meu uso e o seu é que eu uso a opção --delete para remover arquivos do diretório de destino. Assim, não quero que o grep filtre linhas como

deleting folderA/
deleting folderA/folderB/

Além disso, gosto de manter a linha em branco ( ^$ ) para facilitar a leitura, então o pipeline completo é:

rsync -auvn --delete source_folder destination_folder | grep -E '^deleting|[^/]$|^$'

Seria ótimo se rsync tivesse um sinalizador para não imprimir nomes de diretório (ele tem uma opção para quase todo o resto), mas nesse meio tempo, esse é o melhor hack que eu criei. / p>     

por 10.06.2016 / 15:46

Tags