A volte è necessario comprimere più file e / o directory in un unico file. È più facile trasferire un singolo file su una rete e persino su una chiavetta USB (la creazione di migliaia di file sulla memoria flash può essere lenta). Su sistemi operativi come Windows, questa operazione viene generalmente eseguita archiviando in file .zip (zippare) o .rar. Sui sistemi operativi * nix, come Linux, l’utilità di riferimento è “tar”. Il nome di questo comando deriva da Tape ARchive, poiché inizialmente era stato progettato per il backup dei dati su nastro magnetico. Al giorno d’oggi può ancora essere utilizzato per questo scopo, ma nella maggior parte dei casi è semplicemente un metodo per creare i cosiddetti “tarball”. Lo scopo dei tarball è facilitare il caricamento, il download e lo spostamento dei dati o la conservazione dei backup.
1. Consultare il manuale di tar
Ogni comando in Linux ha una pagina di manuale. Puoi consultare il manuale di tar inserendolo nel tuo terminale:
man tar
Naviga tra i contenuti con i tasti freccia, PAGINA SU e PAGINA GIÙ. stampa q per uscire dal manuale.
2. Creare una directory tarball
Crea una directory con nove file vuoti in modo da poter testare i comandi tar:
mkdir $HOME/test9 && touch $HOME/test9/{1..9}
Ora passa alla tua directory home.
cd
Per inviare il contenuto di una directory a un file tar:
tar -cvf test.tar test9
-
c
– sta per creare -
v
– verbose, restituisce quale file è attualmente aggiunto all’archivio; utile per lavori di lunga durata, per vedere i progressi -
f
– dice all’utilità di creare un file tar, con il nome specificato, test.tar
3. Aggiungi contenuto a un tarball esistente
Crea un’altra directory con file vuoti denominati dalla a alla z:
mkdir $HOME/test-az && touch $HOME/test-az/{a..z}
Ora aggiungilo all’archivio tar già esistente (r
parametro):
tar -rvf test.tar test-az
Se apri test.tar in un gestore di archivi grafico, vedrai il seguente contenuto.
4. Elenca i contenuti del file tar
Utilizzare il -t
flag per elencare il contenuto del file tar.
tar -tf test.tar
5. Estrarre i contenuti da Tarball
I contenuti verranno estratti nella directory corrente. Crea una nuova directory e poi passa ad essa:
mkdir $HOME/test-extract && cd $HOME/test-extract
Ora estrai test.tar nella directory corrente:
tar -xvf $HOME/test.tar
6. Crea tarball compresso (gzip)
Se si intende trasferire il file tar attraverso la rete, è buona norma ridurlo per aumentare la velocità di trasferimento. Torna alla tua home directory.
cd
E crea un file tar compresso.
tar -cvzf test.tar.gz test9
Come puoi vedere, l’unica differenza è l’aggiunta z
parametro, che indica a tar di utilizzare gzip per comprimere il file.
7. Crea tarball compresso ancora più piccolo (bzip)
Invece del file z
parametro, puoi usare j
comprimere con bzip.
tar -cvjf test.tar.bz test9
Ciò ridurrà ulteriormente le dimensioni del file ma richiederà più tempo per comprimerlo e decomprimerlo.
8. Estrarre un singolo file o directory
Basta aggiungere il nome esatto del file o della directory, come appare nell’archivio tar:
tar -xvf test.tar test9/7
Questo estrae solo test9/7
file.
9. Estrarre solo file / directory che corrispondono a un modello
Se desideri estrarre tutti i file che terminano con l’estensione .jpg:
tar -xvf test.tar --wildcards '*.jpg'
10. Conserva le autorizzazioni
Le autorizzazioni non sono importanti quando si creano tarball da documenti, immagini e supporti simili. Ma se esegui il backup del tuo sistema, puoi aggiungere il file p
parametro per preservare i permessi dei file:
tar -cvpf test-permissions.tar test9
11. Elimina file o directory da Tarball
Funziona solo su file tar non compressi.
tar -f test.tar --delete test-az
Questo rimuove la directory test-az dal tarball, inclusi i file che contiene. tar f test.tar --delete test-az/z
rimuoverà semplicemente il file “test-az / z”.
12. Escludere file o directory dall’aggiunta a Tarball
tar -cvf test-exclude.tar --exclude test9/9 test9
Come puoi vedere, il file 9 è stato escluso dall’archivio tar. È possibile aggiungere più parametri di esclusione: tar cvf test-exclude.tar --exclude test9/9 --exclude test9/8 test9
.
13. Rimani in un file system
--one-file-system
può essere aggiunto in un comando come tar -cvpzf backup.tar.gz --one-file-system /
.
Questo eseguirà il backup del tuo filesystem di root, escludendo altri filesystem che potresti aver montato in / home, / mnt, / media, / proc e così via.
14. Conserva attributi estesi
Oltre ai permessi dei file, alcune distribuzioni Linux hanno anche attributi di file estesi. Per preservarli tutti, aggiungi questi parametri: --acls --selinux --xattrs
.
Comando di esempio:
tar -cvpzf backup.tar.gz --one-file-system --acls --selinux --xattrs /
15. Crea nuova directory per i file estratti
Normalmente, tar si estrae nella directory corrente. Puoi mkdir new_directory
e cd new_directory
prima di usare tar, se la directory in cui si desidera estrarre non esiste ancora. Ma istruire tar a fare tutto per te è più elegante:
tar -xvf test.tar --one-top-level=new_directory
Conclusione
Questi sono i comandi tar più comunemente usati. Ma l’utilità è versatile e può essere utilizzata in molti altri modi. Se non ti piace leggere i manuali nel terminale, potresti trovare il file Versione HTML del manuale di tar più facile da navigare.