Comando tar in Linux: creare, controllare ed estrarre archivi
tar riunisce file e directory in un unico archivio e permette di estrarli conservando la struttura dei percorsi. Un file .tar non è necessariamente compresso: tar può essere combinato con gzip, bzip2 o xz per ottenere anche la compressione.
Un archivio contiene membri, cioè i file e le directory registrati con i loro nomi. Distinguere creazione, elenco ed estrazione evita di usare il nome dell’archivio come se fosse la directory da salvare. Prima di estrarre, controlla i nomi presenti e la destinazione.
Sintassi e preparazione
tar [action] [option] -f archive [file or directory...]
Le parole tra parentesi e archive sono segnaposto. Scegli una sola operazione principale: -c crea, -t elenca e -x estrae. L’argomento di -f è il file archivio da scrivere o leggere, non la directory di destinazione. Controlla tar --version e man tar: gli esempi usano GNU tar e le opzioni possono differire in altre implementazioni.
Per il primo esempio prepara una directory project/ contenente i tuoi file e lavora dalla directory che la contiene. Servono accesso in lettura ai dati, spazio per l’archivio e permesso di scrittura nella destinazione. Per -z deve essere disponibile gzip nell’ambiente di esecuzione.
Scegli un nome di archivio nuovo o verifica di poter sostituire quello esistente. Mantieni l’archivio di uscita fuori da project/, così non si trova dentro l’albero che stai archiviando. Per un esercizio usa file di prova in una directory separata.
Creare e controllare un archivio gzip
Crea l’archivio. Questo comando riunisce project/ e i suoi contenuti, poi li comprime con gzip:
tar -czf project.tar.gz project/
-c sceglie la creazione, -z la compressione gzip e -f il nome project.tar.gz. Se quel file esiste già, la creazione può sostituirne il contenuto: non aggiunge automaticamente i nuovi file al vecchio archivio. I file sorgente restano nella loro directory.
Leggi l’elenco prima di estrarre. Controlla che nomi e struttura corrispondano ai dati attesi:
tar -tzf project.tar.gz
L’elenco dipende dai file realmente presenti in project/. Per esempio, se contiene readme.txt, il relativo membro ha il percorso project/readme.txt. L’elenco mostra i nomi, non il contenuto testuale dei file; con -v puoi ottenere informazioni più dettagliate.
Controllare l’elenco aiuta a prevedere dove finiranno i file, ma non dimostra che l’archivio sia affidabile né che un ripristino completo riuscirà. Anche la sola lettura di un archivio compresso può richiedere tempo: non presumere che sia un’operazione istantanea.
Estrarre nella directory scelta
Prepara la destinazione e indica a tar dove estrarre:
mkdir -p restore
tar -xzf project.tar.gz -C restore/
mkdir -p crea restore/ se necessario, ma non verifica che sia vuota. Prima dell’esercizio scegli una directory nuova o controllane il contenuto: l’estrazione può sovrascrivere file con percorsi corrispondenti.
-C restore/ cambia la directory di lavoro per l’estrazione; non elimina il prefisso dei nomi conservati nell’archivio. Il membro project/readme.txt viene quindi estratto come restore/project/readme.txt, non come restore/readme.txt. Se il risultato appare un livello più in basso del previsto, confrontalo con l’elenco prima di modificare le opzioni.
Controlla i file importanti dopo l’estrazione e confrontane il contenuto con una fonte valida. Non cancellare la sorgente o l’archivio sulla sola base del fatto che il comando abbia mostrato dei nomi. Se il processo segnala errori, l’estrazione può essere parziale: risolvi il problema e riprova in una destinazione controllata.
Esempio minimo senza compressione
In una directory di prova dove note.txt e bundle.tar non contengono dati da conservare, crea un file piccolo, archivialo e leggi l’elenco:
printf 'hello\n' > note.txt
tar -cf bundle.tar note.txt
tar -tf bundle.tar
L’output atteso del comando di elenco è:
note.txt
printf scrive hello seguito da un ritorno a capo. tar -cf crea l’archivio e tar -tf ne mostra il membro. Il testo hello non compare nell’elenco, perché -t non stampa il contenuto del file. Senza opzioni di compressione, questo esempio crea un archivio tar non compresso.
Per verificarne il ripristino, estrai bundle.tar con -x in un’altra directory vuota indicata con -C, seguendo lo schema precedente. Il risultato deve essere note.txt con gli stessi byte della sorgente.
In una prova locale del 3 novembre 2026, GNU tar 1.35 e gzip 1.14 di Git for Windows hanno creato, elencato ed estratto un archivio gzip con una sottodirectory e file di testo e binari. I contenuti estratti coincidevano byte per byte; anche l’esempio non compresso ha prodotto l’elenco e il testo attesi. Una prova separata su un archivio sacrificabile ha confermato che una nuova creazione lo sostituiva. Questa verifica su Windows riguarda quei file di prova, non il ripristino di proprietà, liste di controllo degli accessi (ACL) o altri metadati di un sistema Linux.
Opzioni principali
| Opzione | Funzione |
|---|---|
-c / -t / -x |
Sceglie creazione, elenco o estrazione. Usa una sola operazione principale. |
-f file |
Specifica l’archivio da scrivere o leggere; il nome deve essere l’argomento di -f. |
-z / -j / -J |
Combina tar rispettivamente con gzip, bzip2 o xz. Controlla la disponibilità del compressore richiesto. |
-C directory |
Cambia la directory di lavoro. Nell’estrazione indirizza i membri alla destinazione scelta. |
-v |
Mostra i nomi elaborati e, secondo l’operazione, informazioni aggiuntive. Non sostituisce la verifica del contenuto. |
Sovrascritture e archivi non affidabili
Prima di estrarre controlla percorsi assoluti, componenti .., collegamenti simbolici e nomi che potrebbero sovrapporsi a file esistenti. Usa una directory vuota separata e i permessi minimi necessari; non estrarre direttamente come amministratore un archivio di provenienza incerta.
GNU tar dispone di protezioni sui percorsi, ma queste non rendono innocuo ogni archivio o ciò che eseguirai dopo. Non aggiungere opzioni come -P per aggirare avvisi sui nomi senza comprenderne l’effetto. Una directory vuota aiuta a limitare sovrapposizioni, ma non è una barriera di sicurezza completa.
La creazione di un archivio non è, da sola, una strategia di backup verificata. Conserva copie indipendenti e prova il ripristino dei dati e dei metadati necessari. Se i file cambiano mentre li archivi, valuta come ottenere una copia coerente per l’applicazione interessata. Eventuali proprietà speciali, ACL o attributi estesi richiedono verifiche specifiche sul sistema di origine e destinazione.
Domande frequenti
Qual è la differenza tra tar e gzip?
tar conserva più file e percorsi in un archivio; gzip comprime un flusso di dati. Con tar -czf combini le due funzioni. Per approfondire la compressione, consulta la guida a gzip in inglese.
Posso usare -c per aggiungere un file a un archivio esistente?
No: -c crea un nuovo archivio e può sostituire quello esistente. Non usarlo come comando di aggiunta; prima conserva il vecchio archivio e verifica l’operazione adatta al formato che stai usando.
Documentazione di riferimento
Il sorgente Texinfo del manuale GNU tar nel repository ufficiale Savannah documenta creazione, compressione e precauzioni di estrazione. È il sorgente del manuale, non una pagina HTML già impaginata; per le opzioni disponibili nella tua installazione consulta anche man tar.




