aspose.info
DE

XAR - Erweiterbares Archivdateiformat

Aktualisiert

Was ist eine XAR-Datei?

Eine Datei mit der Erweiterung .xar (Extensible Archive Format) ist ein UNIX-Archiv, das in komprimiertem oder nicht komprimiertem Format vorliegen kann. Es wird auch unter Mac OS zur Installation von Paketen verwendet. XAR ist Open Source und Teil von Mac OS X 10.5 für die Verwendung mit dem Safari-Browser.

XAR-Dateiformat

Eine XAR-Datei hat drei Hauptbereiche.

  • Header
  • Inhaltsverzeichnis
  • Haufen

XAR-Header

Der XAR-Header ist wie folgt aufgebaut.

FeldDatentypGröße in Bytes
MagicUnsigned Int 324
GrößeUnsigned Int 162
VersionUnsigned Int 162
TOC-Länge komprimiertUnsigned Int 648
TOC-Länge unkomprimiertUnsigned Int 648
PrüfsummeUnsigned Int 324
Message Digest NameNull beendet

Die C-Struktur des XAR-Headers kann wie folgt definiert werden.

struct xar_header {
    uint32_t magic;
    uint16_t size;
    uint16_t version;
    uint64_t toc_length_compressed;
    uint64_t toc_length_uncompressed;
    uint32_t cksum_alg;
    /* A nul-terminated, zero-padded to multiple of 4, message digest name
     * appears here if cksum_alg is 3 which must not be empty ("") or "none".
     */
};

Beachten Sie, dass alle Felder des Headers (magic, size, version, toc_length_compressed, toc_length_uncompressed, cksum_alg) immer in XAR-Dateien in Netzwerk-Byte-Reihenfolge (auch bekannt als Big Endian) gespeichert werden.

XAR-Inhaltsverzeichnis (TOC)

Das Inhaltsverzeichnis ist ein XML-Dokument, das als UTF-8 codiert ist (und muss). Es wird am Anfang der Datei gespeichert, was es einfach macht, das Archiv zu durchsuchen, um einzelne Dateien zu extrahieren. Mit dem XAR-Archiv können Sie die einzelnen Dateien im Archiv unabhängig voneinander komprimieren/codieren, indem Sie verschiedene Komprimierungsschemata wie GZIP, BZIP2 und andere ähnliche verwenden.

<?xml version="1.0"?>

<xar>
  <toc>
    <checksum style="sha1">
      <size>20</size>
      <offset>0</offset>
    </checksum>
    <file id="1">
      <name>xar</name>
      <type>file</type>
      <mode>0755</mode>
      <uid>0</uid>
      <gid>0</gid>
      <user>root</user>
      <group>wheel</group>
      <size>81180</size>
      <data>
        <offset>0</offset>
        <size>74108</size>
        <length>23083</length>
        <extracted-checksum style="md5">d852c77ac3c8e83f312c12b4c3198e6d</checksum>
        <archived-checksum style="md5">ceaf793ccb1990ecbadb20112d5f9e5d</checksum>
        <encoding style="application/x-gzip"/>
      </data>
      <ea>
        <name>com.apple.ResourceFork</name>
        <offset>0</offset>
        <size>7072</size>
        <length>3942</length>
        <extracted-checksum style="md5">0f7061dca2d7411352377db0e53792db</checksum>
        <archived-checksum style="md5">c72de8ac25abe462a930254d82958534</checksum>
        <encoding style="application/x-gzip"/>
      </ea>
    </file>
  </toc>
</xar>

Haufen

Der Heap beginnt unmittelbar nach dem komprimierten toc. Es ist ein unstrukturierter Datenhaufen, auf den das Inhaltsverzeichnis verweist. Die im Inhaltsverzeichnis aufgelisteten Offset-Werte beginnen am Anfang des Heaps. Die Längenwerte im toc beziehen sich auf die tatsächliche Anzahl der im Heap gespeicherten Bytes (komprimiert oder nicht), während sich der Größenwert auf die extrahierte Größe des Elements bezieht (falls erforderlich nach Dekomprimierung).

Verweise