¿Cómo comparar dos files tar (incluido el contenido del file, files nuevos / eliminados, enlaces simbólicos)?

Tengo dos files tar (comprimidos o no comprimidos) y quiero encontrar todas las diferencias en los dos files. Ambos files contienen un sistema de files completo (es decir, cuando se desempaqueta, se generan directorys como /bin , /home , /root , /usr , /var , /etc , … Espero que entiendas el punto). Quiero tener una list de lo siguiente:

  • Nuevos files
  • Archivos eliminados
  • Archivos modificados (contenido de file, no solo tamaño)
  • Se cambiaron los enlaces simbólicos (tanto relativos como absolutos)
  • Enlaces simbólicos nuevos / eliminados

No puedo simplemente descomprimir esos files y usar diff , ya que diff no reconocerá correctamente los enlaces simbólicos absolutos (como lo señalarían de la estructura del sistema de files del file).

¿Hay alguna otra forma de comparar el contenido de dos files tar?

No creo que obtengas nada útil de diff si tienes enlaces simbólicos para comparar como tal. En lugar de tratar de hacerlo todo de una sola vez, realice dos pases separados: uno para comparar los metadatos y otro para comparar los contenidos del file.

Si no tiene nombres de files exóticos, una simple comparación de la salida de tar -tv o pax -v es suficiente para la parte de metadatos. En bash / ksh / zsh:

 pax -v <(archive1.tar) <(archive2.tar) 

Para el contenido del file, móntelos con avfs y compare los dos treees de directorys.

 mountavfs diff -urN ~/.avfs$PWD/archive1.tar\#/ ~/.avfs$PWD/archive2.tar\#/