Extraiga TAR a la tarjeta SD y luego verifique el contenido

Extraiga TAR a la tarjeta SD y luego verifique el contenido

Actualmente extraemos un archivo TAR a una tarjeta SD como esta

tar xf ${ROOT}/rootfs.tar -C /cynox/${DRIVE}/${TARGET} 

Como nota al margen: rootfs.tar contiene archivos para un sistema Linux integrado. Algunos de esos sistemas experimentan algún tipo de corrupción de datos en las tarjetas SD. Esto puede provocar que falten archivos, que el contenido de los archivos esté dañado, etc., impidiendo que el sistema integrado funcione correctamente o incluso que se inicie. Lo más probable es que esto NO esté relacionado con problemas durante la creación de la tarjeta SD, pero para estar totalmente seguros, también tenemos que investigar en esa dirección.

¿Cuál es la mejor manera de comparar el contenido de la tarjeta SD con el contenido del TAR de origen posteriormente?

Sin saber si es práctico en Linux, las cosas que me vienen a la mente son

  1. Cree un nuevo archivo desde la tarjeta SD y compare el MD5 de ambos archivos (¿o serán naturalmente diferentes de alguna manera?)
  2. Extraiga el TAR de origen en otro lugar, calcule el MD5 de cada archivo y compare archivo por archivo (¿es práctico rastrear todas las carpetas/archivos?)
  3. ¿Comparar de alguna manera directamente el contenido de la tarjeta SD con el contenido empaquetado del TAR archivo por archivo?
  4. ¿Necesitamos algunas validaciones especiales con respecto a la estructura de carpetas, permisos de archivos/carpetas, etc.?

No sé qué posibilidades ofrece Linux para esta tarea, por lo que agradecería cualquier sugerencia, orientación en la dirección correcta y ejemplos, si es posible.

Respuesta1

Para comprobar que obtienes el mismo tararchivo, puedes hacer (aquí con GNU tar):

cd /where/it/was/extracted &&
tar tf /path/to/file.tar |
  tar -T - --no-recursion -cf - |
  cmp - /path/to/file.tar

Tenga en cuenta que compara contenido y metadatos, incluida la propiedad y los tiempos. Entonces, por ejemplo, si no extrajiste los archivos como root, es probable que la propiedad sea diferente.

También desea asegurarse de utilizar la misma implementación que tarla que creó el tararchivo.

Respuesta2

Compararía las sumas de verificación de cada archivo.

Primero, la rootfscarpeta emite el siguiente comando:

rootfs# find . -type f -print0 | xargs --null sha1sum --binary > ../rootfs.sum

Luego, en la targetfscarpeta, verifique cada archivo:

targetfs# sha1sum --check <PATH_TO_SUM_FILE> | grep FAILED

información relacionada