tar: Tape ARchiver

Pur avendo già usato tar nel capitolo Capitolo 12, 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...]

Qui di seguito trovate elencate alcune delle possibili opzioni. Ricordate che esse possiedono tutte un'opzione estesa equivalente, ma per queste dovrete fare riferimento alla relativa pagina man, perché qui non saranno indicate.

Nota

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

Ci sono tante, tante, tante altre opzioni, potete fare riferimento alla pagina man tar(1) 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 contenente 
 #   i file che volete archiviare!
 #
$ cd /shared
$ tar cjf ~/images.tar.bz2 images/

Come potete vedere, abbiamo usato tre opzioni: c per dire a tar che volevamo creare un archivio, j per dirgli che lo volevamo compresso con bzip2, e f ~/images.tar.bz2 per dirgli che l'archivio doveva essere creato nella nostra directory home, 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 tjvf 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 (j), e richiedendo una lista estesa (v). Adesso supponiamo che voi abbiate cancellato la directory delle immagini: fortunatamente il vostro archivio è intatto, e ora volete estrarre di nuovo i file nelle loro posizioni originali, in /shared. Ma, poiché volete che il vostro comando find per cercare nuove immagini continui a funzionare correttamente, dovete preservare tutti i loro attributi:

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

Ed ecco fatto!

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

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

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. 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 relativa pagina man.