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.
l'uso del trattino iniziale (-) per le opzioni brevi di tar è da evitare, fatta eccezione per quelle che seguono un'opzione estesa.
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;
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;
z: impone a tar di comprimere con gzip l'archivio da creare, oppure indica che l'archivio da cui estrarre è compresso con gzip;
j: come z, ma il programma usato per la compressione sarà bzip2;
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;
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!
A: aggiunge gli archivi indicati nella linea di comando a quello specificato con l'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 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
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.