Formato archivio TAR

Il formato di archivio tar offre un modo affidabile per archiviare i file. Conserva i dati originali byte per byte, aggiungendo all’inizio un’intestazione da 512 byte. Anche le dimensioni dei file vengono regolate per adattarsi perfettamente ai blocchi da 512 byte. È interessante notare che l’intestazione include un checksum integrato per il rilevamento degli errori. Sebbene l’utilità tar standard possa ignorare le intestazioni danneggiate (e di conseguenza i file associati), continuerà a elaborare il resto dell’archivio, garantendo che tu possa comunque accedere ai file non danneggiati.

Informazioni sull'archivio TAR

Un formato di file tar, abbreviazione di “archivio su nastro”, viene creato dall’utilità tar nei sistemi UNIX. Serve come archivio per raggruppare i file per attività come il backup o la distribuzione. A differenza dei formati di archivio compressi, i file tar memorizzano più file, noti anche come tarball, in un formato non compresso insieme ai metadati dell’archivio. Sebbene i file tar stessi non siano compressi, possono essere compressi utilizzando utilità come gzip o bzip2 per un’archiviazione e un trasferimento efficienti.
Poiché il formato file tar in sé non include la compressione incorporata, gli archivi tar vengono spesso compressi utilizzando utilità esterne come gzip, bzip2, XZ (utilizzando algoritmi di compressione 7-Zip / p7zip LZMA / LZMA2), Brotli, Zstandard e strumenti simili. Questa compressione aiuta a ridurre le dimensioni dell’archivio per una portabilità più semplice e un backup efficiente dei dati. I file compressi risultanti da questo processo possono avere estensioni singole come tgz, tbz, txz, tzst o doppie estensioni come tar.gz, tar.br, tar.bz2, tar.xz, tar.zst.

Evoluzione del formato dell'archivio TAR

Il formato dell’archivio tar si è evoluto nel tempo. Nuove funzionalità aggiunte all’utilità tar a partire dagli anni ‘80 hanno portato a estensioni di formato che includono informazioni aggiuntive per una migliore funzionalità. I primi formati tar mancavano di coerenza nel modo in cui venivano archiviati i campi numerici, ma questo problema è stato risolto nelle versioni successive per migliorare la portabilità. Questo miglioramento è iniziato con il primo standard POSIX per i formati tar nel 1988.
POSIX.1 2001 ha introdotto il formato “tar esteso” (noto anche come tar.h o pax). Questo formato è il più flessibile e incorpora funzionalità di altre specifiche tar. Consente ai fornitori di aggiungere funzionalità personalizzate utilizzando i tag. Sebbene la documentazione evidenzi che non tutte le implementazioni tar possono gestire perfettamente questo formato, la sua progettazione garantisce che qualsiasi strumento in grado di leggere archivi “ustar” possa leggere anche la maggior parte degli archivi “posix”. Inoltre, POSIX.1 2001 ha eliminato la precedente limitazione della dimensione dei file di 8 GB per gli archivi tar.

Struttura del TAR

Un archivio TAR, nella sua essenza, è una sequenza di blocchi di dati. Questi blocchi di dimensione fissa 512 byte ciascuno sono disposti linearmente. Per segnare la fine dell’archivio ci sono due blocchi consecutivi riempiti di zeri.
Tuttavia, se visto in modo logico, un archivio TAR è una serie di voci di file. Ogni voce è composta da più blocchi, di cui il primo blocco è sempre l’intestazione della voce. I blocchi rimanenti memorizzano il contenuto effettivo del file.
All’interno dell’intestazione della voce
L’intestazione della voce funge da modello per ogni file all’interno dell’archivio. Contiene le seguenti informazioni

  • Nome file (100 byte): il nome del file memorizzato in questa voce.
  • Permessi file (8 byte): permessi per l’accesso al file, rappresentato come una stringa ottale.
  • ID proprietario (8 byte): l’ID utente numerico del proprietario del file (formato ottale).
  • ID gruppo (8 byte): l’ID numerico del gruppo del proprietario del file (formato ottale).
  • Dimensione file (12 byte): la dimensione del file in formato ottale.
  • Ora dell’ultima modifica (12 byte): il timestamp ottale dell’ultima modifica del file.
  • Checksum (8 byte): un valore di checksum utilizzato per verificare l’integrità dei dati dell’intestazione.
  • Tipo di file (1 byte): indica il tipo di file archiviato (file normale, collegamento reale o collegamento simbolico).
  • Nome file collegato (lunghezza variabile): se la voce è un collegamento (fisso o simbolico), questo campo memorizza il nome del file collegato.

Vantaggi di questo formato

  • Versatilità - TAR è un formato versatile in grado di archiviare più file e directory in un unico file di archivio, rendendolo adatto a varie esigenze di backup e distribuzione.
  • Conservazione degli attributi dei file TAR preserva importanti attributi dei file come autorizzazioni, proprietà e timestamp, garantendo che i dati archiviati mantengano la propria integrità e usabilità.
  • Semplicità: la struttura dei file TAR è semplice e diretta, il che li rende facili da utilizzare ed elaborare. Ciò semplifica la programmazione e l’automazione delle attività relative agli archivi TAR.

Operazioni supportate dall'archivio TAR

Aspose.ZIP consente all’utente di estrarre una voce particolare o l’intero archivio. Per Aspose.ZIP per .NET È possibile utilizzare TarArchiveClass per aprire il file .tar.gz e quindi scorrere le sue voci, estraendole nella posizione desiderata. Per Aspose.ZIP per Java Approccio simile utilizzando TarArchive per aprire il file .tar.gz ed estrarre le voci.

File TAR - Struttura interna

I file di segmento memorizzano i dati grezzi su un segmento. Sebbene esistano diversi tipi di segmenti, i file TAR distinguono solo tra dati e segmenti in blocco. I segmenti in blocco vengono salvati direttamente “così come sono” nel file TAR.
I segmenti di dati, tuttavia, vengono esaminati per trovare riferimenti ad altri segmenti o contenuto binario non elaborato. Questi riferimenti vengono semplicemente archiviati come elenco di identificatori univoci (UUID) all’interno del segmento dati. I segmenti di riferimento possono essere posizionati all’interno del file TAR corrente o esternamente.
I riferimenti interni si trovano controllando l’indice del file TAR. I riferimenti esterni richiedono uno strumento esterno per individuare il segmento in un altro file TAR. L’elenco dei segmenti di riferimento in un segmento dati viene archiviato nel file grafico per un recupero più rapido. Questo elenco viene mantenuto ordinato per ottimizzare il processo di ricerca.

File TAR - Struttura interna

Struttura dell'archivio interno

  • Metadati dei file: simile a un archivio tar, ogni file memorizza informazioni di base come l’ora della modifica e le autorizzazioni. Tuttavia, questa sezione è flessibile e consente di omettere o includere dettagli aggiuntivi come elenchi di controllo degli accessi (ACL) o attributi estesi (EA) in base alle proprie esigenze. Si consiglia di includere una funzione hash potente (come SHA1) per i file normali per garantire l’integrità dei dati.
  • Flussi di contenuto multipli - A differenza degli archivi tradizionali, i file possono avere più di un flusso di dati all’interno del file di dati interno. Ciò è utile per memorizzare attributi estesi o fork di risorse associati al file.
  • Intestazioni - Il file di indice interno contiene le intestazioni dei file, rispecchiando quelle sparse nel file di dati interno. Ma, se archiviate separatamente, le intestazioni dell’indice devono fare riferimento alla posizione iniziale dei dati corrispondenti all’interno del file di dati. Inoltre, le voci di directory nell’indice elencano i file contenuti e i relativi offset all’interno dell’indice dei file interni.
  • Motivazione per i metadati duplicati - Questa scelta di progettazione garantisce sia uno streaming/decodifica efficiente dei dati che un accesso casuale ai file. Inoltre, i metadati vengono compressi bene, con un conseguente sovraccarico di archiviazione minimo. I test mostrano che i metadati occupano in genere meno dello 0,3% dello spazio di archiviazione, rendendo utile il compromesso.
  • Intestazioni di blocco: le intestazioni di blocco, simili al file esterno, contengono informazioni sulla dimensione del blocco e una sequenza di identificatori univoci.

Esempi di utilizzo di TAR

L’API Aspose.ZIP consente di estrarre archivi nelle tue applicazioni senza la necessità di altre applicazioni di terze parti. L’API Aspose.ZIP fornisce la classe TarArchive per funzionare con gli archivi TAR.

Add entries to existing TAR archive via C#

All you need to do is open archive for extraction and add entry to archive .

    using (TarArchive archive = new TarArchive(existing.tar))
    {
        archive.CreateEntry("one_more.bin", data.bin);
        archive.Save(added.tar);
    }

Delete entries from existing TAR archive via .net

Entries of tar archive can be deleted with similar DeleteEntry methods.

using (var archive = new TarArchive("two_files.tar"))
{
    archive.DeleteEntry(0);
    archive.Save("single_file.tar");
}

Add files to TAR archive without compression

Tar is a file archival format used to group multiple files and directories into a single archive file without compression , unlike formats like ZIP, RAR and others. To create a tar archive without specifying any compression settings, simply use a TarArchive instance.

    using (FileStream tarFile = File.Open("joint.tar", FileMode.Create))
    {
        FileInfo fi1 = new FileInfo("text.txt");
        FileInfo fi2 = new FileInfo("picture.png");
        using (TarArchive archive = new TarArchive())
        {
            archive.CreateEntry("text.txt", fi1);
            archive.CreateEntry("picture.png", fi2);
            archive.Save(tarFile);
        }
    }

Aspose.Zip offers individual archive processing APIs for popular development environments, listed below:

Aspose.Zip for .NETAspose.Zip via JavaAspose.Zip via Python.NET

Ulteriori informazioni sugli archivi TAR

La gente se lo è chiesto

1. Cos’è un archivio TAR?

Un archivio TAR, abbreviazione di Tape Archive, è un formato di file utilizzato per raggruppare più file e directory in un unico file di archivio senza compressione. È comunemente utilizzato per scopi di backup e distribuzione nei sistemi basati su Unix.

2. Quali sono i vantaggi degli archivi TAR?

TAR vanta universalità, poiché è compatibile con la maggior parte dei sistemi operativi e dei programmi di archiviazione, facilitando la condivisione e lo scambio di dati senza interruzioni tra diverse piattaforme. La sua semplicità risiede nella struttura diretta degli archivi TAR, che consente la creazione, l’estrazione e la manipolazione dei file senza sforzo. Inoltre, TAR offre efficienza consentendo la compressione con strumenti esterni come gzip o bzip2, consentendo agli utenti di ridurre le dimensioni del file e conservare spazio di archiviazione e larghezza di banda durante la trasmissione dei dati.

3. Quali sono alcuni limiti degli archivi TAR?

Sebbene TAR sia un formato di file versatile comunemente utilizzato per l’archiviazione e la distribuzione di file nei sistemi basati su Unix, presenta alcune limitazioni di cui è necessario essere consapevoli. Innanzitutto, TAR non dispone di funzionalità di compressione integrate, il che significa che avrai bisogno di strumenti aggiuntivi come gzip o bzip2 per ridurre le dimensioni dei file. In secondo luogo, gli archivi TAR non offrono funzionalità di crittografia native, quindi se hai bisogno di sicurezza dei dati, dovrai fare affidamento su strumenti esterni per la protezione tramite password. Infine, TAR ha un supporto limitato per preservare gli attributi dei file come timestamp e autorizzazioni dei file originali, che potrebbero influire sull’integrità dei dati archiviati.