tar esce su "Impossibile stat: nessun file di directory di questo tipo", perché?


50

Sto provando a creare il file tar.gz usando il seguente comando:

sudo tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/

Quindi inizia a creare file (molti file nella cartella), ma viene visualizzato il seguente errore:

tar: dvr_rdk_v1.tar.gz: Cannot stat: No such file or directory
tar: Exiting with failure status due to previous errors

Non vedo alcuna descrizione di questo errore, cosa significa?

Risposte:


61

Rimuovi -dalle vcfzopzioni. tarnon è necessario il trattino per le opzioni.

Con un trattino, l'argomento per l' -fopzione è z. Quindi il comando sta effettivamente provando ad archiviare dvr_rdk_v1.tar.gze dvr_rdkin un archivio chiamato z. Senza il trattino, la semantica delle opzioni cambia, in modo che l'argomento successivo sulla riga di comando, ovvero il nome del file dell'archivio, diventi l'argomento del fflag.

Controlla anche il tuo permesso di scrittura nella directory da cui stai eseguendo il comando.


6
Non ha bisogno di trattini, ma non dovrebbero essere un problema, sono solo opzionali
Michael Mrozek

18
@MichaelMrozek In realtà, rimuovere il -fa la differenza, perché il tar GNU è eccentrico. Gli argomenti delle opzioni non possono essere raggruppati nel primo argomento quando non inizia con a -, quindi l'argomento to fè l'argomento successivo tare quindi tar vcfz dvr_rdk_v1.tar.gzequivalente tar -v -c -f dvr_rdk_v1.tar.gz -z.
Gilles 'SO- smetti di essere malvagio' il

1
Ho anche capito se rimuovo zo jla compressione dell'archivio ha successo anche con il -coinvolgimento. Quando aggiungo il trattino è incluso, considera l'ultimo carattere dell'opzione come un "file". Quindi come risultato ottengo jo zcome file archiviato se utilizzo questa opzione -cvfzo -cvfj.
JohnnyQ,

9
Riepilogo: se 'f' si presenta come un'opzione ovunque diversa dall'ultima opzione, il comando non eseguirà ciò che era previsto. Non vedo come Gnu non abbia potuto aggiungere un avviso quando rilevano un problema così grave e facilmente rilevabile. Ho appena trascorso 40 minuti cercando di eseguire il debug di questa stranezza. Questo deve aver sprecato centinaia di migliaia di ore-uomo di produttività.
smci,

58

L' -fopzione dovrebbe precedere direttamente il nome del file. Quindi, utilizzare tar -vczf filename.tar.gzinvece di-vcfz


Ah questo spiega perché il comando che sto usando tenta di creare un file di archivio compresso chiamato jo zcon questi comandi -cvfje -cvfzrispettivamente.
JohnnyQ,

17

Il comando tar storicamente è stato uno dei pochi comandi che non seguono l'Unix linee guida utilità sintassi .

La pagina degli standard per tar dice:

f
Utilizzare il primo operando di file (o il secondo, se b è già stato specificato) come nome dell'archivio anziché come predefinito dipendente dal sistema

Mentre le linee guida sulla sintassi includono questo:

Orientamento 5:
una o più opzioni senza argomenti di opzione, seguite al massimo da un'opzione che accetta un argomento di opzione, devono essere accettate se raggruppate dietro un delimitatore "-".

Quindi, mentre il comando che hai digitato, tar -vcfz dvr_rdk_v1.tar.gz dvr_rdk/andrebbe bene con le versioni precedenti di tar, alcune versioni di tar scritte per seguire rigorosamente le linee guida della sintassi dell'utilità analizzeranno questo per significare "utilizzare zcome argomento del file -f". Quindi dovresti usare quanto segue per essere portatile:

tar -cvzf dvr_rdk_v1.tar.gz dvr_rdk/

-1

Per creare l'archivio

$ tar -cvf music.tar Music/

Questo mostra l'elenco di file e cartelle

$ tar -tvf music.tar         

E per estrarre di nuovo

$ tar -xvf music.tar         

Questo non spiega davvero il suo errore, giusto? Questo sta solo spiegando l'uso di tar.
Bernhard,

1
@Bernhard Bene, il suo errore era che stava usando tarmale, anche se è bello menzionare almeno quale sia la differenza chiave (spostandosi -falla fine)
Michael Mrozek

2
@MichaelMrozek Beh, ha piuttosto lasciato fuori il fatto zche falla fine, da qui il mio commento.
Bernhard,

Questo comando funziona per Ubuntu, avrà successo
dhamu,

OK! scusa, non sto ascoltando la tua domanda, ma il comando funziona per Ubuntu.
Dhamu,
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.