web-dev-qa-db-fra.com

tar: Sortie avec statut d'échec en raison d'erreurs précédentes

J'ai écrit un petit script qui tars et compresse une liste de répertoires + fichiers.

Le script semble fonctionner avec succès, en ce sens qu'un fichier .tar.gz utilisable est créé après son exécution.

Cependant, je reçois ce message gênant une fois le script terminé:

tar: Sortie avec statut d'échec en raison d'erreurs précédentes

Je ne vois aucun message d'erreur pendant que le script fonctionne, et comme je l'ai dit, le fichier produit peut être décompressé sans avertissements ni erreurs. Puisque j'utilise ceci dans le cadre de ma sauvegarde, je veux m'assurer de ne pas ignorer quelque chose de grave.

Quelles sont les raisons possibles pour lesquelles ce message d'erreur/avertissement est généré - et puis-je l'ignorer en toute sécurité ?. Si je ne peux pas l'ignorer, quelles sont les étapes à suivre pour diagnostiquer et résoudre l'erreur?

Je cours sur Ubuntu 10.0.4

71
morpheous

Vous recevrez ce message si, pour une raison quelconque, tar ne peut pas ajouter tous les fichiers spécifiés à tar. L'une des plus courantes est de ne pas avoir l'autorisation de lecture sur l'un des fichiers. Cela pourrait être un gros problème puisque vous l'utilisez pour la sauvegarde. Si vous utilisez l'indicateur -v, essayez de le laisser désactivé. Cela devrait réduire le rendement et vous permettre de voir ce qui se passe.

91
KeithB

le problème est l'argument, l'argument f prend le suivant comme nom de fichier, il doit donc être le dernier de l'argument

tar cvzf output.tgz folder

ou

tar -cvzf output.tgz folder

est le même et aucune erreur de prise.

22
Andrea Monni

J'avais le même problème et aucune des réponses ci-dessus n'a fonctionné pour moi. Cependant, j'ai constaté que l'exécution de la commande suivante fonctionnait:

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

Les erreurs auxquelles il était fait référence dans tar: Exiting with failure status due to previous errors peuvent être identifiées en désactivant l'option -v. Après examen, les erreurs provenaient de répertoires tels que /run et /sys.

En excluant ces répertoires, cela fonctionne très bien. J'espère que cela aide quelqu'un avec un problème similaire.

5
DomainsFeatured

Parfois, lors de la sauvegarde de fichiers susceptibles de changer pendant la sauvegarde, tels que les fichiers journaux, vous pouvez trouver utile l’option tar «--ignore-failed-read» (je suis sous Debian Linux, ce n’est pas sûr pour les non-gnu tar).

La sortie standard et les erreurs peuvent être redirigées dans 2 fichiers différents avec quelque chose comme:

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

Je trouve que cela est généralement sans danger, mais s'il vous plaît soyez prudent car le goudron ne va pas s'arrêter ...

5
Fabio Pedrazzoli

J'ai eu le même problème. Tout ce que j'ai fait était de supprimer le tiret ("-") de la commande.

Au lieu de le taper comme

tar -cvfz output.tar.gz folder /

essayez de taper comme

dossier tar cvfz output.tar.gz /

Je ne sais pas pourquoi le tiret posait des problèmes dans mon cas, mais au moins cela a fonctionné.

3
jack

Vous avez mal compris une réponse précédente. Le problème n’est pas le -, c’est là que se trouve la f dans votre liste d’arguments.

tar cvfz target.tgz <files>

Je vais essayer de créer une archive appelée "z", car c'est le texte après f. Le message d'erreur vient du fait que tar ne peut pas trouver "target.gz" à ajouter à l'archive "z".

tar cvzf target.tgz <files>

Créera correctement target.tgz et y ajoutera des fichiers. C'est parce que target.tgz est le premier texte après l'argument f.

1
Thornbury

Habituellement, vous pouvez ignorer ce message. Si des modifications (telles que des suppressions/créations/modifications de fichiers) ont été apportées à l’arborescence de répertoires sous-jacente lors de la création de l’archive tar, ce message sera envoyé. De plus, s’il existe des fichiers spéciaux tels que des nœuds de périphériques, fifos, etc., ils provoqueront cet avertissement.

Êtes-vous sûr de ne voir aucun fichier coupable? Essayez avec tar cvfz yourtarball.tgz /your/path

0
Janne Pikkarainen