Tenho uma situação em que tenho duas árvores de diretórios grandes, an old
e 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 new
que não estão em old
b) todos os arquivos que são diferentes entre new
eold
Arquivos que existem apenas em old
devem 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-run
opçã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.