Eu tenho uma situação em que tenho 2 grandes árvores de diretório, uma old
e uma new
. A maioria dos arquivos é a mesma, 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 juntar alguns comandos.
Estou trabalhando no Ubuntu Linux.
Encontrei algumas ideias neste post sobre como obter uma lista dos arquivos que são diferentes. Eu fui com uma abordagem rsync com a
--dry-run
opção:Depois de obter a lista de arquivos, invoquei tar com esses arquivos. Isso não resolveu totalmente o problema de diferenciar arquivos apenas em um lugar em relação ao 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.