Teer (Dateiformat)

In der Computerwissenschaft ist Teer (ist auf Band-Archiv zurückzuführen gewesen), beide ein Dateiformat (in der Form eines Typs des Archivs bitstream), und der Name eines Programms hat gepflegt, solche Dateien zu behandeln. Das Format wurde in den frühen Tagen von Unix geschaffen und durch POSIX.1-1988 und später POSIX.1-2001 standardisiert.

Teer wurde am Anfang entwickelt, um Daten folgenden Eingabe/Ausgabe-Geräten zu Band-Aushilfszwecken zu schreiben. Es wird jetzt allgemein verwendet, um viele Dateien in eine größere Datei für den Vertrieb oder das Archivieren zu sammeln, während man Dateisysteminformation wie Benutzer und Gruppenerlaubnis, Daten und Verzeichnisstrukturen bewahrt.

Format-Details

Ein Teer-Archiv besteht aus einer Reihe von Dateigegenständen. Jeder Dateigegenstand schließt irgendwelche Dateidaten ein, und wird durch eine 512-Byte-Kopfball-Aufzeichnung vorangegangen. Die Dateidaten werden unverändert geschrieben, außer dass seine Länge zu einem Vielfache von 512 Bytes zusammengetrieben wird und der Extraraum gefüllte Null ist. Das Ende eines Archivs wird durch mindestens zwei nullgefüllte Konsekutivaufzeichnungen gekennzeichnet. (Der Ursprung der Rekordgröße des Teers scheint, die 512-Byte-Plattensektoren zu sein, die in der Version 7 Unix Dateisystem verwendet sind.)

Viele historische Band-Laufwerke gelesen und schreiben Datenblöcke der variablen Länge, bedeutenden vergeudeten Raum auf dem Band zwischen Blöcken (für das Band verlassend, um physisch anzufangen und aufzuhören, sich zu bewegen). Einige Band-Laufwerke (und rohe Platten) unterstützen nur Datenblöcke der festen Länge. Außerdem, wenn man jedem Medium wie ein filesystem oder Netz schreibt, braucht man weniger Zeit, um einen großen Block zu schreiben, als viele kleine Blöcke. Deshalb schreibt der Teer-Befehl Daten in Blöcken von vielen 512-Byte-Aufzeichnungen. Der Benutzer kann einen blockierenden Faktor angeben, der die Zahl von Aufzeichnungen pro Block ist; der Verzug ist 20, 10-Kilobyte-Blöcke erzeugend (der groß war, als UNIX erfunden wurde, aber jetzt ziemlich klein scheint). Der Endblock eines Archivs wird zur vollen Länge mit Nullbytes ausgepolstert.

Dateikopfball

Der Dateikopfball-Block enthält metadata über eine Datei. Um Beweglichkeit über verschiedene Architekturen mit der verschiedenen Byte-Einrichtung zu sichern, wird die Information im Kopfball-Block in ASCII verschlüsselt. So, wenn alle Dateien in einem Archiv Textdateien sind, und ASCII-Namen haben, dann ist das Archiv im Wesentlichen eine ASCII Textdatei (viele NUL Charaktere enthaltend).

Nachfolgende Erweiterungen haben dieses ursprüngliche Attribut verdünnt (der, wegen der Anwesenheit von NULs nie besonders wertvoll war, die häufig durch Textmanipulationsprogramme schlecht behandelt werden).

Die durch das ursprüngliche Teer-Format von Unix definierten Felder werden im Tisch unten verzeichnet. Der Verbindungstyp-Tisch des Hinweises/Datei schließt einige moderne Erweiterungen ein. Wenn ein Feld unbenutzt ist, wird es mit NUL Bytes gefüllt. Der Kopfball wird mit NUL Bytes ausgepolstert, um es einen 512-Byte-Block füllen zu lassen.

Pre-POSIX.1-1988-Teer-Kopfball:

Das pre-POSIX.1-1988 Indikator-Feld Link kann die folgenden Werte haben:

Einige pre-POSIX.1-1988 Teer-Durchführungen haben ein Verzeichnis angezeigt, indem sie einen schleifenden Hieb (/) im Namen gehabt worden ist.

Numerische Werte werden in Oktalzahlen mit ASCII Ziffern, mit der Führung zeroes verschlüsselt. Aus historischen Gründen sollten ein endgültiger NUL oder Raumcharakter verwendet werden. So, obwohl es 12 Bytes gibt, die vorbestellt sind, für die Dateigröße zu versorgen, können nur 11 Oktalziffern versorgt werden. Das gibt eine maximale Dateigröße von 8 Gigabytes auf archivierten Dateien. Um diese Beschränkung zu überwinden, hat Stern 2001 eine Basis das 256 Codieren eingeführt, das durch das Setzen des Bit der hohen Ordnung des leftmost Bytes eines numerischen Feldes angezeigt wird. GNU-TEER und BSD-Teer sind dieser Idee gefolgt. Zusätzlich polstern Versionen des Teers aus der Zeit vor dem ersten POSIX Standard von 1988 die Werte mit Räumen statt zeroes aus.

Die Kontrollsumme wird durch die Einnahme der Summe der nicht unterzeichneten Byte-Werte des Kopfball-Blocks mit den acht Kontrollsumme-Bytes berechnet, die genommen sind, um ascii Räume zu sein (Dezimalzahl schätzen 32). Es wird als eine sechs Ziffer Oktalzahl mit der Führung zeroes gefolgt von einem NUL und dann einem Raum versorgt. Verschiedene Durchführungen kleben an diesem Format nicht. Für die bessere Vereinbarkeit, ignorieren Sie Führung und das Schleppen whitespace, und bekommen Sie die ersten sechs Ziffern. Außerdem haben einige historische Teer-Durchführungen Bytes, wie unterzeichnet, behandelt. Durchführungen berechnen normalerweise die Kontrollsumme beide Wege, und behandeln sie als gut, wenn entweder die unterzeichnete oder nicht unterzeichnete Summe die eingeschlossene Kontrollsumme vergleicht.

Unix filesystems unterstützen vielfache Verbindungen (Namen) für dieselbe Datei. Wenn solche mehreren Dateien in einem Teer-Archiv erscheinen, wird nur der erste als eine normale Datei archiviert; der Rest wird als harte Verbindungen, mit dem "Namen der verbundenen Datei" Feldsatz zum ersten jemandes Name archiviert. Auf der Förderung sollten solche harten Verbindungen im Dateisystem erfrischt werden.

UStar Format

Die meisten modernen Teer-Programme gelesen und schreiben Archiven im UStar (Gleichförmiges Standardband-Archiv) Format, das durch den POSIX IEEE P1003.1 Standard von 1988 eingeführt ist. Es hat zusätzliche Kopfball-Felder eingeführt. Ältere Teer-Programme werden die Extrainformation ignorieren, während neuere Programme für die Anwesenheit der "Ustar"-Schnur prüfen werden, um zu bestimmen, ob das neue Format im Gebrauch ist. Das UStar-Format berücksichtigt längere Dateinamen und versorgt Extrainformation über jede Datei.

Das Typ-Fahne-Feld kann die folgenden Werte haben:

POSIX.1-1988 Verkäufer spezifische Erweiterungen mit der Verbindungsfahne schätzt.. 'Z' haben teilweise eine verschiedene Bedeutung mit verschiedenen Verkäufern und werden so überholt und ersetzt durch die POSIX.1-2001 Erweiterungen gesehen, die ein Verkäufer-Anhängsel einschließen.

Gebrauch

Tarpipe

Ein tarpipe ist der Prozess, ein Teer-Archiv auf stdout und Rohrleitung der Archiv-Byte-Strom zu einem anderen Teer-Prozess zu schaffen, in einem anderen Verzeichnis arbeitend, und das auf stdin empfangene Archiv auspackend. Das kopiert den kompletten Quellverzeichnisbaum einschließlich aller speziellen Dateien, wie symlinks oder Charakter oder Block-Gerät-Dateien.

Zum Beispiel:

Teer-c "$srcdir" | Teer-C "$destdir"-xv

</pre>

Softwarevertrieb

Das Teer-Format setzt fort, umfassend in Linux und Windows verwendet zu werden, weil es ein Teil des GNU-Projektes ist und als ein Teil jedes Vertriebs von GNU/Linux kommt. Versionen von Linux verwenden Eigenschaften prominent im verschiedenen Softwarevertrieb mit dem grössten Teil des Softwarequellcodes, der in.tar.gz (zusammengepresste Teer-Archive) bereitgestellt ist. Das Teer-Format ist eine Basis von einigen Typen der Eindämmung und des Vertriebs, solcher als in den.DEB-Archiven von Debian, die auch in Ubuntu verwendet werden.

Probleme und Beschränkungen

Das ursprüngliche Teer-Format wurde in den frühen Tagen von UNIX, und trotz des aktuellen weit verbreiteten Gebrauches geschaffen, viele seiner Designeigenschaften werden veraltet betrachtet.

Viele alte Teer-Durchführungen (wie GNU-Teer) registrieren erweiterte Attribute (xattrs) oder ACLs nicht. 2001 hat Stern Unterstützung für ACLs eingeführt und hat Attribute erweitert. Später hat Vertrieb von Major Linux ihre eigenen geflickten Versionen des GNU-Teers geschaffen das unterstützt völlig ACL.

1997 hat Sonne eine Methode vorgeschlagen, um Erweiterungen auf das Teer-Format hinzuzufügen. Diese Methode wurde später für den POSIX.1-2001 Standard akzeptiert. Dieses Format ist als verlängertes Teer-Format oder Pax-Format bekannt. Das neue Teer-Format erlaubt Ihnen, jeden Typ von Verkäufer-markierten mit dem Verkäufer spezifischen Erhöhungen hinzuzufügen. Die folgenden Erhöhungsanhängsel werden durch den POSIX Standard definiert:

  • alle drei Zeitstempel einer Datei in der willkürlichen Entschlossenheit (verwenden die meisten Durchführungen Nanosekunde-Körnung)
  • Pfadnamen der unbegrenzten Länge und Codierung, die codiert
  • symlink nehmen Namen der unbegrenzten Länge und Codierung ins Visier, die codiert
  • Benutzer und Gruppennamen der unbegrenzten Länge und Codierung, die codiert
  • Dateien mit der unbegrenzten Größe (wird das historische Teer-Format auf 8 GB beschränkt)
  • userid und groupid uneingeschränkt (war dieses historische Teer-Format, werden auf einen max. id von 2097151 beschränkt)
  • eine Codierungsdefinition für Pfadnamen und Benutzer/Gruppennamen

2001 ist Stern der erste Teer geworden, um das neue Format zu unterstützen. 2004 hat GNU-Teer das neue Format unterstützt.

Andere Formate sind geschaffen worden, um die Mängel des Teers zu richten. Diese Formate schließen DAR (Platte Archiver) und Rdiff-Unterstützung ein (sieh Falschheitszweig der Savanne-Softwareseite). Jedoch sind diese Formate nicht ein Teil jedes offiziellen Standards.

Betriebssystembetreuung

Unix ähnliche Betriebssysteme schließen gewöhnlich Werkzeuge ein, um Teer-Dateien zu unterstützen, sowie Dienstprogramme haben allgemein gepflegt, sie, wie gzip und bzip2 zusammenzupressen. Im Gegensatz schließt Windows von Microsoft weder grafische Werkzeuge noch Werkzeuge der Befehl-Linie ein, um diese Formate zu lesen oder zu schaffen, den Gebrauch von Drittwerkzeugen wie 7-Schwirren-verlangend.

Tarbomb

Ein tarbomb ist abschätziger Hacker-Slang, der verwendet ist, um sich auf eine Teer-Datei zu beziehen, die der üblichen Vereinbarung z.B nicht folgt, enthält es viele Dateien dass Extrakt ins Arbeitsverzeichnis. Solch eine Teer-Datei kann Probleme durch das Überschreiben von Dateien desselben Namens im Arbeitsverzeichnis oder das Mischen der Dateien eines Projektes in einen anderen schaffen. Es ist fast immer eine Unannehmlichkeit dem Benutzer, der verpflichtet ist, mehrere überall im Inhalt des Verzeichnisses gestreute Dateien zu identifizieren und zu löschen. Solches Verhalten wird als schlechte Etikette seitens des Schöpfers des Archivs betrachtet.

Ein zusammenhängendes Problem ist der Gebrauch von absoluten Pfaden oder Elternteilverzeichnisverweisungen, wenn es Teer-Dateien schafft. Aus solchem archivess herausgezogene Dateien werden häufig in ungewöhnlichen Positionen außerhalb des Arbeitsverzeichnisses und wie ein tarbomb geschaffen, das Potenzial haben, um vorhandene Dateien zu überschreiben. GNU-Teer weigert sich standardmäßig, absolute Pfade zu schaffen oder herauszuziehen, aber ist noch für Elternteilverzeichnisverweisungen verwundbar. (Das bsdtar Programm, das auf mehreren Betriebssystemen verfügbar ist und der Verzug "Teer" auf Mac OS X v10.6 ist, weigert sich auch normalerweise, Elternteilverzeichnisverweisungen oder symlinks zu folgen.)

Ein Befehl-Linienbenutzer kann beide dieser Probleme durch das erste Überprüfen einer Teer-Datei mit einem der folgenden Befehle vermeiden:

:::

Diese Befehle ziehen keine Dateien heraus, aber zeigen die Namen aller Dateien im Archiv. Wenn irgendwelcher problematisch ist, kann der Benutzer ein neues leeres Verzeichnis schaffen und das Archiv darin herausziehen — oder die Teer-Datei völlig vermeiden. Die meisten grafischen Werkzeuge können den Inhalt des Archivs vor dem Extrahieren von ihnen zeigen.

Zufälliger Zugang

Eine andere Schwäche des Teer-Formats im Vergleich zu anderen Archiv-Formaten (wie DAR (Platte Archiver)) ist, dass es keine zentralisierte Position für die Information über den Inhalt der Datei (eine "Inhaltsübersicht" von Sorten) gibt. So, um die Namen der Dateien zu verzeichnen, die im Archiv sind, muss man das komplette Archiv durchlesen und nach Plätzen suchen, wo Dateien anfangen. Außerdem, um eine kleine Datei aus dem Archiv herauszuziehen, anstatt im Stande zu sein, den Ausgleich in einem Tisch nachzuschlagen und direkt zu dieser Position wie andere Archiv-Formate mit dem Teer zu gehen, muss man das komplette Archiv durchlesen, nach dem Platz suchend, wo die gewünschte Datei anfängt. Für große Teer-Archive verursacht das eine große Leistungsstrafe, Teer-Archive unpassend für Situationen machend, die häufig zufälligen Zugang von individuellen Dateien verlangen.

Der mögliche Grund dafür, eine zentralisierte Position der Information nicht zu verwenden, besteht darin, dass Teer ursprünglich für Bänder gemeint geworden ist, die aufs Geratewohl Zugang irgendwie schlecht sind: Wenn die TOC am Anfang des Archivs wären, würde das Schaffen davon bedeuten, zuerst alle Positionen aller Dateien zu berechnen, der verdoppelte Arbeit, ein großes geheimes Lager oder das Rückspulen des Bandes nach dem Schreiben von allem braucht, um den TOC zu schreiben. Andererseits, wenn die TOC am Ende wären (wie mit SCHWIRREN-Dateien, zum Beispiel der Fall ist), würde das Lesen des TOC verlangen, dass das Band Wunde zum Ende ist, auch Zeit aufnehmend und das Band durch die übermäßige Abnutzung erniedrigend. Kompression kompliziert weiter Sachen; da das Rechnen komprimierter Positionen für einen TOC am Anfang Kompression von allem vor dem Schreiben des TOC brauchen würde, ist ein TOC mit unkomprimierten Positionen nicht wirklich nützlich (da man alles irgendwie dekomprimieren muss, um die richtigen Positionen zu bekommen), und das Dekomprimieren eines TOC am Ende der Datei das Dekomprimieren der ganzen Datei irgendwie auch verlangen könnte.

Aber heute gibt es mehrere Erweiterungsdienstprogramme, die das Teer-Dateiindexieren durchführen, so zufälligen Zugang sowohl für rohe Teer-Dateien als auch für Teer-Dateien ermöglichend, die mit gzip zusammengepresst sind (der dem Indexieren zugänglich ist). Solch ein Index kann in einer getrennten Datei, angehangen oder prepended an der Archiv-Datei behalten werden.

Schlüsseldurchführungen

Es hat historisch viele Durchführungen des Teers und vieler gegeben allgemeine Datei archivers hat mindestens teilweise Unterstützung für den Teer (häufig eine der Durchführungen unten verwendend). Die meisten Teer-Durchführungen können auch lesen und cpio schaffen, und pax (ist der Letztere wirklich ein Teer-Format mit POSIX-2001-extensions).

  • Teer von FreeBSD (auch BSD Teer) ist der Verzug-Teer auf dem grössten Teil der Software von Berkeley Vertriebsbasierte Betriebssysteme einschließlich Mac OS X. Die Kernfunktionalität ist als libarchive für die Einschließung in andere Anwendungen verfügbar.
  • GNU-Teer ist der Verzug auf dem grössten Teil des Vertriebs von Linux. Es basiert auf der öffentlichen Bereichsdurchführung pdtar, der 1987 angefangen hat. Es kann verschiedene Formate, einschließlich ustar, pax, GNUS und V7-Formate verwenden.
  • Teer von Solaris basiert auf dem ursprünglichen UNIX V7 Teer und ist der Verzug auf Solaris Betriebssystem.
  • Stern (einzigartiges Standardband archiver) wurde 1982 durch den Jörg Schilling geschaffen und wird laut der CDDL-Lizenz veröffentlicht. 1999 wurde gefunden, schnellste Teer-Durchführung zu sein.

Zusätzlich können die meisten pax Durchführungen lesen und viele Typen von Teer-Dateien schaffen.

Adoptionsraten

Einige Teer-Durchführungen werden standardmäßig auf den meisten UNIX ähnlichen Betriebssystemen installiert und häufig für die Systemoperation erforderlich. Zum Beispiel ließen 99.99 % aller Computer von Ubuntu Linux GNU-Teer, mit dem BSD Teer und Stern an 0.05 % und 0.04 % installieren. libarchive, der Mehrwegteil des BSD Teers, wird auf 76.4 % von Computern von Ubuntu installiert, da es durch verschiedene Anwendungen einschließlich Teile des ZWERGS, der Verzug-Tischumgebung auf Ubuntu verwendet wird. Auf Debian wird libarchive1 auf 35.8 % von Computern installiert. Auf BSD und Solaris Betriebssysteme, wie man erwartet, sehen diese Zahlen völlig verschieden aus, da sie einen verschiedenen Teer standardmäßig einschließen. Als solcher widerspiegeln die Zahlen größtenteils den Verzug, der durch diese Betriebssysteme und Tischumgebungen verwendet ist.

Da der grösste Teil der Mehrzweckdatei archivers auf anderen Plattformen, einschließlich Windows, auch das Teer-Archiv-Format unterstützt, kann dieses Format allgemein verwendbar auf jeder Computerplattform betrachtet werden.

Das Namengeben von komprimierten Teer-Dateien

Teer-Archiv-Dateien haben gewöhnlich die Erweiterung.tar, als darin. Das Wortspiel, tarball, wird verwendet, um sich auf eine Teer-Datei zu beziehen.

Eine Teer-Archiv-Datei enthält unkomprimierte Byte-Ströme der Dateien, die sie enthält. Um Archiv-Kompression zu erreichen, ist eine Vielfalt von Kompressionsprogrammen, wie gzip, bzip2, xz, lzip, lzma, oder Kompresse verfügbar, die das komplette Teer-Archiv zusammenpressen. Gewöhnlich erhält die komprimierte Form des Archivs einen Dateinamen durch das Befestigen der mit dem Format spezifischen Kompressor-Nachsilbe am Archiv-Dateinamen. Zum Beispiel, ein Teer-Archiv archive.tar, wird archive.tar.gz genannt, wenn er durch gzip zusammengepresst wird.

Populäre Teer-Programme wie der BSD und die GNU-Versionen des Teers unterstützen die Befehl-Linienoptionen Z (Kompresse), z (gzip), und j (bzip2), um die Archiv-Datei nach der Entwicklung oder dem Auspacken automatisch zusammenzupressen oder zu dekomprimieren. Der GNU-Teer von der Version 1.20 unterstützt vorwärts auch (LZMA). 1.21 auch Unterstützungen lzop über, 1.22 fügt hinzu, dass die Unterstützung für xz über oder, und 1.23 Unterstützung für lzip darüber hinzufügt.

Die 8.3 Dateinamenbeschränkungen des MS-DOS, ist auf zusätzliche Vereinbarung hinausgelaufen, um zusammengepresste Teer-Archive zu nennen. (Diese Praxis hat sich mit FETT geneigt, das lange Dateinamen anbietet.)

Siehe auch

  • Vergleich der Datei archivers
  • Die Liste des Archivs formatiert
  • Liste von Programmen von Unix

Außenverbindungen

  • Dokumentationszusammenfassung für viele Formate mit Verweisungen auf den Standard

Glasgow, Paisley und Johnstone Canal / Die Themse und der Medway Kanal
Impressum & Datenschutz