tar (informatica)

bestandsformaat

In de informatica is tar (afgeleid van tape archive) zowel een bestandsformaat (in de vorm van een soort archief bitstream) als de naam van een programma dat gebruikt wordt om dergelijke bestanden te verwerken. Het formaat werd opgericht in de vroege dagen van Unix en gestandaardiseerd door POSIX.1-1988[1] en later POSIX.1-2001.[2]

tar
Pictogram voor tar bestanden in KDE
Pictogram voor tar bestanden in KDE
Bestandsextensie .tar
MIME-type application/x-tar
Verschijningsdatum januari 1979
Portaal  Portaalicoon   Informatica

In eerste instantie werd het ontwikkeld om gegevens te schrijven naar sequentiële I/O-apparaten voor tape back-up doeleinden. Nu wordt tar vooral gebruikt om een groot aantal bestanden te verzamelen in een groter bestand voor distributie of archivering, terwijl het de bestandssysteeminformatie zoals gebruikers- en groepsrechten, data en directory structuren behoudt.

Veel historische tapedrives lezen en schrijven datablokken van variabele lengte, waardoor aanzienlijke verspilde ruimte op de band tussen de blokken achtergelaten wordt. Dit heeft als gevolg voor de band dat er vaak fysiek gestart en gestopt moet worden, dus veel bewegingen. Sommige tapedrives (en harde schijven) ondersteunen alleen datablokken van een vaste lengte. Ook bij het schrijven naar een medium zoals een bestandssysteem of het netwerk kost het minder tijd om een groot blok te schrijven dan vele kleine blokken. Daarom schrijft het tar-commando gegevens in blokken van (veelvouden van) 512 byte. De gebruiker kan voor de blokgrootte een factor specifiëren - dat is het aantal records per blok opgeven, de standaard is 20 (waarmee 10 kilobyte-blokken ontstaan - dit was groot toen UNIX werd uitgevonden, maar lijkt nu vrij klein).

Formaatdetails

bewerken

Een tar-archief bestaat uit een reeks van bestandsobjecten. Elk bestandsobject bevat de folders en wordt voorafgegaan door een 512-byte header-record. De bestandsdata wordt onveranderd geschreven, behalve dat zijn lengte wordt afgerond op een veelvoud van 512 bytes en de extra ruimte wordt gevuld met null-bytes. Het einde van een archief wordt gekenmerkt door ten minste twee opeenvolgende null-gevulde records. (De oorsprong van tar's recordformaat blijken de 512-byte schijfsectoren, gebruikt in het versie 7 Unix-bestandssysteem, te zijn.) Het laatste blok van een archief wordt gespekt tot de volledige lengte met nul-bytes.

File header

bewerken

Het bestand header-record bevat metadata over een bestand. Om portabiliteit te verzekeren over verschillende architecturen met verschillende byte ordeningen, wordt de informatie in de header gecodeerd in ASCII. Dus als alle bestanden in een archief tekstbestanden zijn, en ASCII-namen hebben, dan is het archief is in wezen een ASCII-tekstbestand (met veel NULL-karakters).

Latere uitbreidingen hebben dit originele attribuut verdund (wat nooit bijzonder waardevol was vanwege de aanwezigheid van NULLEN, die veelal worden behandeld door tekst-manipulatieprogramma's).

De velden, die volgens het originele Unix tar-formaat gedefinieerd zijn, staan in de onderstaande tabel. De link indicatie/bestandstype tabel bevat enkele moderne uitbreidingen. Als een veld niet gebruikt wordt is het gevuld met NULL-bytes. De hoofding is opgevuld met NULL-bytes om een 512 byte record te vullen.

Pre-POSIX.1-1988 tar hoofding:

Veld Begin Veldgrootte Veld
0 100 Bestandsnaam
100 8 Bestandsmode
108 8 Numeriek gebruikers-ID van de eigenaar
116 8 Numeriek gebruikers-ID van de groep
124 12 Bestandsgrootte in bytes (octale basis)
136 12 Laatste wijziging tijd in numeriek Unix tijdsformaat (octaal)
148 8 Checksum voor header record
156 1 Link indicator (bestandstype)
157 100 Naam van gelinkt bestand

Het pre-POSIX.1-1988 Link indicator veld kan de volgende waarden hebben:

Link indicator veld
Waarde Betekenis
'0' or (ASCII NULL) Normaal bestand
'1' Harde link
'2' Symbolische link

Zie ook

bewerken
bewerken
  • (en) manpage over tar (documentatie)