16.5. tar: Tape ARchiver

Pur avendo già visto un utilizzo per tar nel capitolo La compilazione e l'installazione di software libero, non vi abbiamo spiegato come funziona: lo scopo di questa sezione è proprio questo. Come find, anche tar è un antico strumento di Unix, e come tale ha una sintassi un po' particolare. La sua sintassi è:

tar [opzioni] [file...]

Eccovi ora un elenco di opzioni. Ricordate che esse possiedono tutte un'opzione estesa equivalente, ma per queste dovrete fare riferimento alla relativa pagina di manuale, perché qui non saranno indicate. E, naturalmente, qui non saranno indicate neanche tutte le opzioni disponibili :-).

Nota

l'uso del trattino iniziale (-) per le opzioni brevi di tar è da evitare, fatta eccezione per quelle che seguono un'opzione estesa.

  1. c: Questa opzione è usata per creare nuovi archivi. ~

  2. x: Questa opzione è usata per estrarre file da un archivio esistente.

  3. t: Elenca i file contenuti in un archivio esistente.

  4. v: Elenca semplicemente i file mentre vengono aggiunti o estratti da un archivio, oppure, insieme all'opzione t (vedi sopra), mostra una lista estesa dei file invece di una breve.

  5. f <file>: Crea un archivio di nome <file>, estrae dall'archivio <file> oppure elenca i file dell'archivio <file>. Se questo parametro non viene indicato, il file predefinito sarà /dev/rmt0, che generalmente è un file speciale associato a uno streamer (unità a nastri). Se al posto del nome del file viene usato - (un trattino), l'uscita o l'ingresso (a seconda se state estraendo da un archivio o creandone uno) saranno associati a standard output o standard input.

  6. z: Dice a tar che l'archivio da creare deve essere compresso con gzip, oppure che l'archivio da cui estrarre è compresso con gzip.

  7. y: Come z, ma il programma usato per la compressione sarà bzip2.

  8. p: Quando vengono estratti file da un archivio conserva tutti i loro attributi, compresi proprietario, ultima data d'accesso e così via. Molto utile per copie di interi filesystem.

  9. r: Accoda a un archivio esistente i file indicati nella linea di comando. Ricordate che l'archivio al quale accodate i file non deve essere compresso!

  10. A: Aggiunge gli archivi indicati nella linea di comando a quello associato all'opzione f. Come per r, affinché questo funzioni gli archivi non devono essere compressi.

Ci sono tante, tante, tante altre opzioni, potete fare riferimento alla pagina man 1 tar per una lista completa; guardate ad esempio l'opzione d. Ora facciamo un po' di pratica; supponiamo che vogliate creare un archivio di tutte le immagini contenute in /shared/images, compresso con bzip2, di nome images.tar.bz2 e posizionato nella vostra home directory. Dovrete quindi scrivere:

 #
 # Attenzione: dovete trovarvi nella directory che contiene 
 #   i file che volete archiviare!
 #
$ cd /shared
$ tar cyf ~/images.tar.bz2 images/

Come potete vedere, abbiamo usato tre opzioni: c per dire a tar che volevamo creare un archivio, y per dirgli che lo volevamo compresso con bzip2, e f ~/images.tar.bz2 per dirgli che l'archivio doveva essere creato nella nostra directory base, con il nome images.tar.bz2. Ora potremmo voler controllare che l'archivio sia corretto; possiamo farlo semplicemente vedendo l'elenco dei suoi file:

 #
 # Torniamo alla nostra directory home
 #
$ cd
$ tar tyvf images.tar.bz2

Qui abbiamo detto a tar di elencare (t) i file dell'archivio images.tar.bz2 (f images.tar.bz2), avvertendolo che questo archivio era compresso con bzip2 (y), e richiedendo una lista estesa (v). Ora supponiamo che voi abbiate cancellato la directory delle immagini; fortunatamente il vostro archivio è intatto, e ora volete estrarre di nuovo la directory nella sua posizione originale, in /shared. Ma, poiché volete che il vostro comando find per cercare nuove immagini continui a funzionare correttamente, dovete preservare tutti gli attributi dei file:

 #
 # spostatevi nella directory dove volete estrarre
 # i file contenuti nell'archivio
 #
$ cd /shared
$ tar yxpf ~/images.tar.bz2

Ed ecco fatto!

Ora, supponiamo che vogliate estrarre dall'archivio la directory images/cars, e nient'altro. Potete scrivere così:

$ tar yxf ~/images.tar.bz2 images/cars

Nel caso ve ne stiate preoccupando, state tranquilli: se provate ad archiviare file speciali, tar li considererà per quello che sono, file speciali, e non ne copierà il contenuto. Perciò, sì, potete tranquillamente includere /dev/mem in un archivio :-). Ah, si comporta correttamente anche con i collegamenti, quindi non preoccupatevi neanche di questo. Per quel che riguarda i collegamenti simbolici, date uno sguardo anche all'opzione h nella pagina di manuale.


Tux on Star from MandrakeSoft Linux è un trademark registrato di Linus Torvalds. Tutti gli altri copyright e trademark appartengono ai rispettivi proprietari.
A meno che non sia specificato diversamente, tutto il contenuto di queste pagine e tutte le immagini sono Copyright MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/