Como criar automaticamente um tarball a partir de diferenças de diretórios?

Como criar automaticamente um tarball a partir de diferenças de diretórios?

Tenho uma situação em que tenho duas árvores de diretórios grandes, an olde a new. A maioria dos arquivos são iguais, mas alguns são diferentes e/ou ausentes na versão antiga. Eu gostaria de encontrar uma maneira de criar automaticamente um arquivo tar que contenha:
a) todos os arquivos newque não estão em old
b) todos os arquivos que são diferentes entre neweold

Arquivos que existem apenas em olddevem ser ignorados. Links simbólicos precisam ser mantidos. "Diferente" precisa ser determinado por uma comparação binária completa.
Como você pode imaginar, estou tentando criar um patch para fazer com que uma árvore corresponda a outra. Talvez já exista uma ferramenta para fazer isso ou talvez eu precise reunir alguns comandos.
Estou trabalhando no Ubuntu Linux.

Responder1

Encontrei algumas ideias sobreesta postagemsobre como obter uma lista dos arquivos que são diferentes. Optei por uma abordagem rsync com a --dry-runopção:

rsync -rv --dry-run --size-only --links old/ new/

Assim que obtive a lista de arquivos, invoquei o tar com esses arquivos. Isso não resolveu totalmente o problema de diferenciar arquivos apenas em um lugar e outro, mas com alguma intervenção manual, consegui que funcionasse. Eu gostaria de ter chegado a uma solução totalmente automatizada, mas consegui resolver meu problema imediato com essas etapas gerais.

informação relacionada