¿Cómo crear automáticamente un tarball a partir de diferencias en directorios?

¿Cómo crear automáticamente un tarball a partir de diferencias en directorios?

Tengo una situación en la que tengo 2 árboles de directorios grandes, an oldy 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 newno están en old
b) todos los archivos que son diferentes entre newyold

Los archivos que sólo existen en olddeben 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-runopció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.

información relacionada