Tengo una situación en la que tengo 2 árboles de directorios grandes, an old
y a new
. La mayoría de los archivos son iguales, pero algunos son diferentes y/o faltan en la versión anterior. Me gustaría encontrar una manera de crear automáticamente un archivo tar que contenga:
a) todos los archivos que new
no están en old
b) todos los archivos que son diferentes entre new
yold
Los archivos que sólo existen en old
deben ignorarse. Es necesario mantener los vínculos simbólicos. "Diferente" debe determinarse mediante una comparación binaria completa.
Como puedes imaginar, estoy intentando crear un parche para que un árbol coincida con otro. Tal vez ya exista una herramienta para hacer esto, o tal vez necesite encadenar algunos comandos.
Estoy trabajando en Ubuntu Linux.
Respuesta1
Encontré algunas ideas sobreesta publicaciónsobre cómo obtener una lista de los archivos que son diferentes. Opté por un enfoque rsync con la --dry-run
opción:
rsync -rv --dry-run --size-only --links old/ new/
Una vez que tuve la lista de archivos, invoqué tar con esos archivos. Esto no resolvió totalmente el problema de diferenciar archivos solo en un lugar frente al otro, pero con un poco de intervención manual, logré que funcionara. Ojalá hubiera podido llegar a una solución totalmente automatizada, pero pude resolver mi problema inmediato con estos pasos generales.