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 qualquer um dos 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, esta saída não é ideal e requer 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 executadas. 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?

Andrew Schwartz
fonte

Respostas:

5

Costumo usar o rsync para sincronizar as estruturas de diretórios e gosto 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 o meu uso e o seu é que eu uso o --delete opção para remover arquivos do diretório de destino. Assim, não quero o grep para filtrar linhas como

deleting folderA/
deleting folderA/folderB/

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

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

Seria ótimo se rsync tinha 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 truque que eu criei.

Anthony Geoghegan
fonte