tar (software)

software di archiviazione e relativo formato
tar
Estensione.tar
Tipo MIMEapplication/x-tar
Tipoarchiviazione
Compressionenessuna
StandardPOSIX.1-1998, POSIX.1-2001
Formato aperto?
Sito webwww.gnu.org/software/tar/tar.html

tar (acronimo per tape archive), in informatica è un software che permette di generare dei file utili per l'archiviazione e il backup, sia su memorie di massa che su dispositivi a nastro magnetico utilizzando il formato omonimo.

Tale formato è divenuto poi uno standard da POSIX.1-1998 e dal successivo POSIX.1-2001.

CaratteristicheModifica

Oltre a poter immagazzinare più file dentro un unico archivio (packing), tar permette di conservare diverse informazioni del file system, quali utente, gruppo e permessi, data e ora, e la struttura delle directory. Secondo la tradizione Unix "ogni programma, una sola funzione", tar non supporta direttamente la compressione dati.

Poiché tar è stato sviluppato in origine per l'uso con dispositivi ad accesso sequenziale, quali appunto le unità a nastro, le prestazioni per quanto riguarda l'estrazione di un singolo file non sono le migliori, dato che il software deve leggere l'intero archivio per localizzarlo. L'opzione -f indica il file da utilizzare per le operazioni di scrittura o rilettura dell'archivio. Comunemente, un file prodotto da tar viene denominato tarball.

tar è comunemente utilizzato in unione con un'utility esterna di compressione dati, ad esempio gzip, bzip2 o compress (non più in uso), dal momento che da solo non ha la capacità di comprimere i file. Si potrebbe pensare che ciò richieda più passaggi: di fatto non è così, poiché l'operatore pipe di Unix permette di combinare i due passaggi in un solo comando, utilizzando un'unica riga di comando. Inoltre, la versione GNU di tar supporta le opzioni a riga di comando -z (gzip), -j (bzip2), e -Z (compress), che abilitano la compressione per il file che viene creato.

Esempi di utilizzo e sintassiModifica

  • Per creare un file con tar, utilizza i seguenti comandi:
    • Semplice file "tar" (per archiviazione): tar -cf nome_tarball.tar file_da_archiviare1 file_da_archiviare2 ...
    • Per archiviare e comprimere in due passi:
      • tar -cf nome_tarball.tar file_da_archiviare1 file_da_archiviare2 ...
        gzip nome_tarball.tar
    • Per archiviare e comprimere, due passi su una sola riga:
      • tar -cf nome_tarball.tar file_da_archiviare1 file_da_archiviare2 && gzip nome_tarball.tar
    • Per archiviare e comprimere, in un solo passo:
      • tar -czf nome_tarball.tar.gz file_da_archiviare1 file_da_archiviare2
  • Per vedere il contenuto di un archivio .tar.gz
    • tar -tvzf nome_tarball.tar.gz
  • Per estrarre i file dall'archivio, utilizza i seguenti comandi:
    • Semplice file di tar: tar -xf nome_tarball.tar
    • Un passaggio alla volta:
      • gunzip nome_tarball.tar.gz
        tar -xf nome_tarball.tar
    • Tutto insieme:
      • gunzip -c nome_tarball.tar.gz | tar -xf -

Per utilizzare bzip2 invece di gzip, è sufficiente sostituire con bzip2 dove viene utilizzato gzip e bunzip2, dove gunzip viene utilizzato nelle varie righe di comando.

Utilizzando il flag della compressione previsto per il tar di GNU:

  • Per comprimere:
    • Utilizzando gzip: tar -czf nome_tarball.tgz file_da_archiviare1 file_da_archiviare2 ...
    • Utilizzando bzip2: tar -cjf nome_tarball.tbz2 file_da_archiviare1 file_da_archiviare2 ...
    • Utilizzando xz: tar -cJf nome_tarball.tar.xz file_da_archiviare1 file_da_archiviare2 ...
    • Utilizzando compress: tar -cZf nome_tarball.tar.Z file_da_archiviare1 file_da_archiviare2 ...
    • Utilizzando un altro programma di compressione: tar --use-compress-program=name_of_program -cf nome_tarball.tar.XXX file_da_archiviare1 file_da_archiviare2 ...
  • Per decomprimere ed estrarre i file dall'archivio:
    • Archivio compresso con gzip: tar -xzf nome_tarball.tar.gz
    • Archivio compresso con bzip2: tar -xjf nome_tarball.tar.bz2
    • Archivio compresso con xz: tar -xJf nome_tarball.tar.xz
    • Archivio compresso con compress: tar -xZf nome_tarball.tar.Z
    • Archivio compresso con altro programma di compressione: tar --use-compress-program=nome_del_programma -xf nome_tarball.tar.XXX

Ricorda che:

  • c: crea archivi
  • x: estrae i file dall'archivio
  • v: scorre la lista dei file, generalmente evitato nella creazione/estrazione in quanto potrebbe produrre un lungo output inutile
  • z: comprime/decomprime in formato gzip
  • j: comprime/decomprime in formato bzip2
  • J: comprime/decomprime in formato xz
  • Z: comprime/decomprime in formato compress

Dettagli sul formato fileModifica

Una limitazione dei primi drive a nastro era che i dati potevano essere scritti solo in blocchi da 512 byte. Un file tar è la concatenazione di uno o più file, ognuno di essi preceduti da un'intestazione. Il file viene trascritto inalterato tranne la sua lunghezza: viene arrotondato ai multipli di 512 byte, lo spazio che avanza viene riempito con zeri (0x00). La fine del file viene contrassegnata con almeno due blocchi vuoti (quindi 1 KB).

L'intestazione viene codificata in ASCII per aumentare la portabilità dei file: spostare un file tar da una piattaforma con un certo sistema di ordinamento dei byte ad un'altra con diverso ordinamento creerebbe problemi.

Nella tabella seguente sono elencati i campi definiti dal formato tar originale. Quando un campo non viene usato è riempito con una serie di zero. L'intestazione è discostata con dei byte di zero per formare i blocchi da 512.

Offset campo Dimensione Nome
0 100 Nome del file
100 8 Modo file
108 8 ID utente proprietario
116 8 ID utente gruppo
124 12 Dimensione file in byte (in base ottale)
136 12 Data ultima modifica
148 8 Checksum del blocco intestazione
156 1 Indicatore link
157 100 Nome del file collegato

EstensioniModifica

  • .tar
  • .tar.gz or .tgz (quando compresso con gzip)
  • .tar.bz2, .tbz2, or .tbz (quando compresso con bzip2)
  • .tar.xz (quando compresso con xz)
  • .tar.Z (quando compresso con compress)

Tipo MIMEModifica

Il tipo MIME associato a tar è application/x-tar.

Voci correlateModifica

Collegamenti esterniModifica