tar: uscita con stato di errore a causa di errori precedenti


78

Ho scritto un piccolo script che tara e comprime un elenco di directory + file.

Lo script sembra funzionare correttamente, in quanto un file .tar.gz utilizzabile viene creato dopo l'esecuzione dello script.

Tuttavia, ricevo questo fastidioso messaggio al termine dello script:

tar: uscita con stato di errore a causa di errori precedenti

Non vedo alcun messaggio di errore mentre lo script funziona e, come ho detto, il file prodotto può essere decompresso senza avvisi / errori. Dal momento che sto usando questo come parte del mio backup, voglio assicurarmi di non ignorare qualcosa di serio.

Quali sono le possibili ragioni per cui viene prodotto questo messaggio di errore / avviso e posso tranquillamente ignorarlo? Se non riesco a ignorarlo, quali sono i passaggi per diagnosticare e risolvere l'errore?

Sono in esecuzione su Ubuntu 10.0.4

Risposte:


100

Riceverai quel messaggio se, per qualsiasi motivo, tar non può aggiungere tutti i file specificati al tar. Uno se il più comune non ha il permesso di lettura su uno dei file. Questo potrebbe essere un grosso problema poiché lo stai usando per il backup. Se stai usando la -vbandiera, prova a lasciarla spenta. Ciò dovrebbe ridurre l'output e farti vedere cosa sta succedendo.


8
+1 per il suggerimento (in precedenza utilizzavo l'opzione 'dettagliata'). Ho scoperto che c'era un problema di autorizzazione su almeno uno dei file. Almeno ora so come risolverlo. molte grazie
morphheous

sì, usando sudo è stato risolto il problema
concordato il

abbandonare la bandiera -v è un ottimo consiglio e mi ha aiutato a risolvere il mio problema. 'verbose' oscura la causa del fallimento dietro un muro di testo
scottyseus

22

il problema è l'argomento, fargomento prende il prossimo come nome del file, quindi deve essere l'ultimo dell'argomento

tar cvzf output.tgz folder

o

tar -cvzf output.tgz folder

è lo stesso e nessun errore take.


Risolto il mio problema Stavo provando tar -zcvfp dando errore ma quando ho provato tar -zxvpf allora tutto bene. Grazie.
Mian Asbat Ahmad,

6

A volte il backup dei file che potrebbero cambiare durante il backup come file di log, potrebbe essere utile l'opzione tar '--ignore-failed-read' (sono su Debian Linux, non sono sicuro per non gnu tar).

L'output e l'errore standard possono essere reindirizzati in 2 file diversi con qualcosa del tipo:

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

Trovo che questo sia generalmente sicuro, ma per favore fai attenzione, poiché il tar non si fermerà ...


5

Avevo lo stesso problema e nessuna delle risposte precedenti ha funzionato per me. Tuttavia, ho scoperto che l'esecuzione del comando seguente ha funzionato:

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

Gli errori a cui si fa riferimento in tar: Exiting with failure status due to previous errorspossono essere identificati disattivando l'opzione -v. Al momento della revisione, gli errori provenivano da directory come /rune /sys.

Escludendo queste directory, funziona perfettamente. Spero che questo aiuti chiunque abbia un problema simile.


3

Ho avuto lo stesso problema. Tutto quello che ho fatto è stato rimuovere il trattino ("-") dal comando.

Invece di digitarlo come

tar -cvfz output.tar.gz cartella /

prova a digitarlo come

tar cvfz output.tar.gz cartella /

Non sono consapevole del motivo per cui il trattino stava causando problemi nel mio caso, ma almeno ha funzionato.


6
Probabilmente hai provato questo con GNU tar. La tua confusione deriva dal fatto che accetta due diversi stili di opzioni: le opzioni tar "vecchio stile" senza trattino e le opzioni "standard unix" con trattino. Le opzioni con trattino richiedono un argomento di un'opzione per seguire l'opzione. Quindi in questo caso l'argomento per -fdovrebbe essere output.tar.gze non ci deve essere zin mezzo. Senza ri-ordinamento delle opzioni sarebbe correttamente essere: tar -cvf output.tar.gz -z folder/. Il vecchio stile prevede tutte le opzioni in un unico posto e seguono tutti gli argomenti.
pabouk,


@pabouk Quel commento sembrava degno di essere una risposta da solo. Aggiungi il contenuto di quel commento come risposta a questa domanda in modo che il credito vada dove è dovuto il credito.
cwallenpoole,

Ho anche avuto problemi, ma era un file con il nome -v, quindi apparentemente tar ha alcuni bug per quanto riguarda i file di cui può eseguire il backup ... questo non dovrebbe essere un problema. la mia soluzione alternativa dal momento che rm e mv non funzionava era quella di utilizzare un file manager. così apparentemente anche mv e rm sono buggy. ho provato mv '-v' v e rm '-v' ma ho ricevuto messaggi di errore. tar ha detto che non è stato possibile creare il file tar. stava usando -cfjv
Jim Michaels il

1

Hai frainteso una risposta precedente. Il problema non è il -, è dove si trova il ftuo elenco di argomenti.

tar cvfz target.tgz <files>

Proverà a creare un archivio chiamato "z", poiché questo è il testo dopo f. Il messaggio di errore è perché tar non riesce a trovare "target.gz" da aggiungere all'archivio "z".

tar cvzf target.tgz <files>

Crea correttamente target.tgz e vi aggiunge i file. Questo perché target.tgz è il primo testo dopo l' fargomento.


Questo dovrebbe essere aggiunto come commento alla risposta "confusa". Sfortunatamente ti sarà permesso di aggiungere tali commenti solo dopo aver guadagnato 50 punti reputazione. Per l'argomento: l'hai provato? L'ho testato con GNU tar 1.26 e le varianti con e senza trattino sono davvero diverse come descritto nella risposta di jack. Si comporta come è scritto nella risposta.
pabouk,

0

Di solito puoi ignorare quel messaggio. Se ci sono cambiamenti (come eliminazioni / creazioni / modifiche di file) all'albero di directory sottostante durante la creazione di tar, verrà lanciato quel messaggio. Anche se ci sono file speciali come nodi di dispositivo, fifo e così via, causeranno questo avviso.

Sei sicuro di non poter vedere alcun file colpevole? Prova contar cvfz yourtarball.tgz /your/path


0

Ho avuto un problema analogo non raccontando un file che avevo ricevuto. Si scopre che non avevo il permesso di scrivere i file nell'archivio di proprietà di root. Usando sudo è stato risolto.


0

Uno dei motivi per ottenere questi errori per i principianti è quello
Si dimenticano di eseguire operazioni nella directory in cui sono presenti i file
Vai in quella posizione ed esegui il comando 
Dato che i miei file sono sul desktop 
~ / Desktop # tar - cf done.tar abc xyz
Dove xyz e abc sono file e li stiamo archiviando in done.tar
Se andiamo ed eseguiamo il comando in un'altra posizione otterremo l'errore sopra 

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.