Tar (informatica)

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
tar
Pictogram voor tar bestanden in KDE
Pictogram voor tar bestanden in KDE
Bestandsextensie .tar
MIME-type application/x-tar
Portaal  Portaalicoon   Informatica

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]

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

Uitleg[bewerken]

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 getopt 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 nul bytes. Het einde van een archief wordt gekenmerkt door ten minste twee opeenvolgende nul-gevulde records. (De oorsprong van tar's record formaat 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 NUL 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 gedefineerd 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 NUL bytes. De hoofding is opgevuld met NUL 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 NUL) Normaal bestand
'1' Harde link
'2' Symbolische link
Bronnen, noten en/of referenties
  1. (en) "IEEE Std 1003.1-1988, IEEE Standard for Information Technology - Portable Operating System Interface (POSIX)"
  2. (en) "IEEE Std 1003.1-2001, IEEE Standard for Information Technology - Portable Operating System Interface (POSIX)"