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
- Cree un nuevo archivo desde la tarjeta SD y compare el MD5 de ambos archivos (¿o serán naturalmente diferentes de alguna manera?)
- 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?)
- ¿Comparar de alguna manera directamente el contenido de la tarjeta SD con el contenido empaquetado del TAR archivo por archivo?
- ¿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 tar
archivo, 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 tar
la que creó el tar
archivo.
Respuesta2
Compararía las sumas de verificación de cada archivo.
Primero, la rootfs
carpeta emite el siguiente comando:
rootfs# find . -type f -print0 | xargs --null sha1sum --binary > ../rootfs.sum
Luego, en la targetfs
carpeta, verifique cada archivo:
targetfs# sha1sum --check <PATH_TO_SUM_FILE> | grep FAILED