tar: salir con estado de falla debido a errores anteriores

78

He escrito un pequeño script que alquila y comprime una lista de directorios + archivos.

El script parece ejecutarse con éxito, ya que se crea un archivo .tar.gz utilizable después de que se ejecuta el script.

Sin embargo, recibo este mensaje molesto una vez que finaliza el script:

tar: salir con estado de falla debido a errores anteriores

No veo ningún mensaje de error mientras el script está funcionando y, como dije, el archivo producido puede descomprimirse sin advertencias / errores. Como estoy usando esto como parte de mi copia de seguridad, quiero asegurarme de que no estoy ignorando algo serio.

¿Cuáles son las posibles razones por las que se genera este mensaje de error / advertencia? ¿Puedo ignorarlo con seguridad? Si no puedo ignorarlo, ¿cuáles son los pasos para diagnosticar y resolver el error?

Estoy corriendo en Ubuntu 10.0.4

morfeo
fuente

Respuestas:

100

Recibirá ese mensaje si, por alguna razón, tar no puede agregar todos los archivos especificados al tar. Uno si el más común es no tener permiso de lectura en uno de los archivos. Esto podría ser un gran problema ya que lo está utilizando para realizar copias de seguridad. Si está utilizando la -vbandera, intente dejarla apagada. Esto debería reducir la salida y permitirle ver lo que está sucediendo.

KeithB
fuente
8
+1 para la sugerencia (estaba usando la opción 'detallada' anteriormente). Descubrí que había un problema de permiso en al menos uno de los archivos. Al menos ahora sé cómo resolver esto. muchas gracias
morpheous
sí, usando sudo solucionó el problema
whizcreed
abandonar la bandera -v es un gran consejo y me ayudó a resolver mi problema. 'detallado' oscurece la causa del fracaso detrás de una pared de texto
scottyseus
22

el problema es el argumento, el fargumento toma el siguiente como nombre de archivo, por lo que debe ser el último argumento

tar cvzf output.tgz folder

o

tar -cvzf output.tgz folder

es lo mismo y no toma error.

Andrea Monni
fuente
Resuelto mi problema Intenté tar -zcvfp dando error pero cuando intenté tar -zxvpf entonces todo bien. Gracias.
Mian Asbat Ahmad
6

A veces, al hacer una copia de seguridad de los archivos que pueden cambiar durante la copia de seguridad, como los archivos de registro, puede resultarle útil la opción tar '--no ignore-error-lectura' (estoy en Debian Linux, no estoy seguro de que no sea gnu tar).

La salida estándar y el error se pueden redirigir en 2 archivos diferentes con algo como:

LOGDIR='/var/log/mylogdir' 
LOG=${LOGDIR}/backup.log 
ERRLOG=${LOGDIR}/backup.error.log 
DATE=$(date +%Y-%m-%d)
HOSTNAME=$(hostname)
DATA_DIRS='/etc /home /root'

tar --ignore-failed-read -f ${BACKUP_DIR}/${HOSTNAME}-${DATE}.tgz -cvz ${DATA_DIRS} > $LOG 2> $ERRLOG

Creo que esto es generalmente seguro, pero tenga cuidado ya que el alquitrán no se detendrá ...

Fabio Pedrazzoli
fuente
5

Estaba teniendo el mismo problema y ninguna de las respuestas anteriores me funcionó. Sin embargo, descubrí que ejecutar el siguiente comando funcionaba:

tar -cpzf /backups/fullbackup.tar.gz --exclude=backups --exclude=proc --exclude=tmp --exclude=mnt --exclude=sys --exclude=dev --exclude=run /

Los errores a los que se hace referencia tar: Exiting with failure status due to previous errorsse pueden identificar desactivando la opción -v. Tras la revisión, los errores provienen de directorios como /runy /sys.

Al excluir estos directorios, funciona bien. Espero que esto ayude a cualquiera con un problema similar.

Dominios Destacados
fuente
3

Yo tuve el mismo problema. Todo lo que hice fue eliminar el guión ("-") del comando.

En lugar de escribirlo como

tar -cvfz output.tar.gz folder /

intenta escribirlo como

tar cvfz output.tar.gz folder /

No sé por qué el guión estaba causando problemas en mi caso, pero al menos funcionó.

Jack
fuente
66
Probablemente haya probado esto con GNU tar. Su confusión proviene del hecho de que acepta dos estilos diferentes de opciones: las opciones de alquitrán "estilo antiguo" sin guión y las opciones "unix estándar" con guión. Las opciones con guión requieren un argumento de una opción para seguir la opción. Entonces, en este caso, el argumento -fdebe ser output.tar.gzy no debe estar zen el medio. Sin re-ordenamiento de las opciones sería correcta será: tar -cvf output.tar.gz -z folder/. El viejo estilo espera todas las opciones en un solo lugar y todos los argumentos siguen.
pabouk
Consulte la documentación de GNU tar y también, por ejemplo , la página del manual de tar Tru64 UNIX .
pabouk
@pabouk Ese comentario parecía digno de ser una respuesta en sí mismo. Agregue el contenido de ese comentario como respuesta a esta pregunta para que el crédito vaya a donde se debe.
cwallenpoole
También tuve problemas, pero era un archivo con el nombre -v, así que aparentemente tar tiene algunos errores con respecto a qué archivos puede respaldar ... esto no debería ser un problema. mi solución, ya que rm y mv no funcionarían, era usar un administrador de archivos. aparentemente, mv y rm también tienen errores. Intenté mv '-v' v y rm '-v' pero recibí mensajes de error. alquitrán mencionó que no podía registrar el archivo tar. estaba usando -cfjv
Jim Michaels
1

Has entendido mal una respuesta anterior. El problema no es el -, es donde festá en su lista de argumentos.

tar cvfz target.tgz <files>

Intentará crear un archivo llamado "z", ya que ese es el texto después f. El mensaje de error se debe a que tar no puede encontrar "target.gz" para agregar al archivo "z".

tar cvzf target.tgz <files>

Creará correctamente target.tgz y le agregará archivos. Esto se debe a que target.tgz es el primer texto después del fargumento.

Thornbury
fuente
Esto debe agregarse como un comentario a la respuesta "confundida". Lamentablemente, se le permitirá agregar dichos comentarios solo después de ganar 50 puntos de reputación. Al tema: ¿Lo probaste? Lo probé con GNU tar 1.26 y las variantes con y sin guión son realmente diferentes como se describe en la respuesta de jack. Se comporta como está escrito en la respuesta.
pabouk
0

Por lo general, puede ignorar ese mensaje. Si hay algún cambio (como eliminaciones / creaciones / modificaciones de archivos) en el árbol de directorios subyacente durante la creación de tar, arrojará ese mensaje. Además, si hay archivos especiales como nodos de dispositivos, fifos, etc., causarán esa advertencia.

¿Estás seguro de que no puedes ver ningún archivo culpable? Probar contar cvfz yourtarball.tgz /your/path

Janne Pikkarainen
fuente
0

Tuve un problema similar al descomprimir un archivo que había recibido. Resulta que no tenía permiso para escribir los archivos en el archivo propiedad de root. Usando sudo lo arregló.

ttwalkertt
fuente
0

Una de las razones para obtener estos errores para principiantes es que
Se olvidan de realizar operaciones en el directorio donde están presentes los archivos
Ve a esa ubicación y ejecuta el comando 
Como mis archivos están en el escritorio 
~ / Desktop # tar - cf done.tar abc xyz
Donde xyz y abc son archivos y estamos almacenando esos archivos en done.tar
Si vamos y ejecutamos el comando en otra ubicación, obtendremos el error anterior 

Ravi Teja Mureboina
fuente