Tengo un script bash que crea un archivo '.tar'. Una vez que se crea el archivo, me gustaría probar su integridad y enviar un correo electrónico al usuario raíz si la integridad es mala.
Sé que necesitaría usar el comando tar -tf /root/archive.tar
para verificar la integridad del archivo, pero ¿cómo podría implementar esto en una declaración bash if y verificar si hay errores?
tar
salida/dev/null
, ya que probablemente no quiera verla.tar
implementaciones detectan o informan todos los errores cont
(bsdtar
no, puede usartar xOf file.tar > /dev/null
allí). No todas lastar
implementaciones saldrían con el estado de salida 2,star
(255) obsdtar
(1) no, pero lo que importa es que el estado de salida no es cero aquí.exit(2)
respecto a la página de manual apropiada, no el valor de salida exacto (es por eso que tuve »no cero« mencionado explícitamente en la siguiente oración). Anotó esto (y cambió la sección a la correcta -.-).lo siento, pero no puede, parece que tar carece de la capacidad de prueba (por ejemplo, si se olvida de * nix e intenta probarlo con winrar, el resultado será: "El comando no es compatible con este tipo de archivo")
Como señalé en los comentarios anteriores, tar literalmente carece de CRC interno para tener un término de comparación, por lo tanto, si cambia un archivo tar con un editor, el listado y la extracción pueden funcionar sin problemas sin error, pero extraer datos corruptos
En conclusión, termino aquí esperando una solución, pero no hay una, afortunadamente hay dos buenas noticias:
hay archivos muy, muy, muy raros de alquitrán que no están comprimidos con otro programa (como gzip, bzip2, etc.), por lo tanto, ese programa tendrá una solución de prueba y las personas que no los comprimen son un poco cojos, REALMENTE LAME
para mi problema personal, tengo suerte, después de extraerlo, acabo de encontrar un archivo md5sum con CRC de todos los archivos dentro (incluso la persona que puso el alquitrán de arhive en la red y no quería comprimirlo, todavía quería estar capaz de ser verificado)
fuente
Puede hacerlo pasando los siguientes argumentos a
tar
:fuente
-c
crea el archivo llamado via-f
('test.tar').-z
Gzips el archivo.-v
lo hace detallado. Estoy bastante seguro de que esta no es una solución precisa.