カテゴリ:
歴史
Xar(アーカイバ)
XAR ( e X tensible AR chive formatの略 )は、オープンソースのファイルアーカイバーであり、アーカイバーのファイルフォーマットです。 OpenDarwinプロジェクト内で作成され、macOS X 10.5以降でソフトウェアインストールルーチン、およびSafari 5.0以降のブラウザ拡張機能で使用されます。 Xarは、gzip圧縮されたpaxファイルの使用を置き換えました。
RPMの開発ブランチであるRPM5は、xarを使用します。
ファイル構造
このファイルは、ヘッダー、目次、およびヒープの3つのセクションで構成されています。すべてのフィールドはビッグエンディアン順に保存されます。
ヘッダ
オフセット# | サイズ (バイト単位) | 目的 |
---|---|---|
0 | 4 | ファイル形式をXarとして識別するために使用されるファイル署名。 これは常にxarと等しくなります! |
4 | 2 | ヘッダーサイズ |
6 | 2 | 使用するXar形式のバージョン。 現在、バージョン1のみがあります。 |
8 | 8 | TOC圧縮データの長さ。 |
16 | 8 | TOC非圧縮データの長さ。 |
24 | 4 | チェックサムアルゴリズム:
|
28 | 0、4、36 | 時々パディングバイトまたはチェックサムアルゴリズム名 |
目次
Xarはcpio、tar、またはarとは異なり、TOC(目次)をファイルの先頭に保存し、アーカイブへの追加をより複雑にしますが、個々の含まれているファイルを抽出するためにアーカイブをスキャンする必要はありません。 。目次は、zlib圧縮、UTF-8エンコード、XMLドキュメントとして保存されます。 Xarに保存される各ファイルは、独立して圧縮/エンコードされます。これにより、gzipを使用してファイルをエンコードし、bzip2などの異なる方法を使用して同じアーカイブ内の別のファイルをエンコードすることができます。一部のシステムでは、アーカイブメンバーをxzまたはlzma圧縮方式でエンコードすることもできます。
目次の例
?xml version = "1.0" encoding = "UTF-8"?> xar> toc> checksum style = "sha1"> offset> 0 / offset> size> 20 / size> / checksum > file id = "1"> group> staff / group> gid> 20 / gid> user> joe / user> uid> 501 / uid> mode> 0755 / mode> type> directory / type> name> com.foobar / name> file id = "2"> group> / group> gid> 20 / gid> user> / user> uid> 501 / uid> mode> 0775 / mode> type> directory / type> name> Contents / name> file id = "3"> data> length> 428 / length> offset > 20 / offset> size> 1005 / size> encoding style = "application / x-gzip" /> archived-checksum style = "SHA1"> a5f6f1461213a904f831d4ef6f214638342842ed / archived-checksum> extracted-checksum style = "SHA1"> 21d21a0c90378248ce0dfb6f345376d1b00d65fc / extracted-checksum> / data> group> / group> gid> 20 / gid> user> / user> uid> 501 / uid> mode> 0664 / mode> type> file / type> name> Info.plist / name> / file> file id = "4"> group> / group> gid> 20 / gid> user > / user> uid> 501 / uid> mode> 0775 / mode> type> directory / type> name> Resources / name> file id = "5"> da ta> length> 14868 / length> offset> 448 / offset> size> 274432 / size> encoding style = "application / x-gzip" /> archived-checksum style = "SHA1"> efe5c97921de7ccc5aebc158d158e9d4280d6814 / archived-checksum> extracted-checksum style = "SHA1"> 45c8be42d1d9afdb57ddd5e9311453010ec46161 / extracted-checksum> / data> group> / group> gid> 20 / gid> user> / user> uid> 501 / uid> mode> 0664 / mode> type> file / type> name> foobar / name> / file> file id = "6"> data> length> 17635 / length> offset> 15316 / offset> size> 45056 / size> encoding style = "application / x-gzip" /> archived-checksum style = "SHA1"> 3c761ffcc81ee6e232e4f4a1c4a81654c26c4e52 / archived-checksum> extracted-checksum style = "SHA1"> 0ea31f8ef0e5987a1838a64ab5c26ebf3ee4bc37 / extracted-checksum> / data> group> / group> gid> 20 / gid> user> / user> uid> 501 / uid > mode> 0664 / mode> type> file / type> name> docSet.skidx / name> / file> file id = "7"> group> / group> gid> 20 / gid> user> / user> uid> 501 / uid> mode> 0775 / mode> type> directory / type> name> Docu ments / name> file id = "8"> data> length> 35790 / length> offset> 32951 / offset> size> 209242 / size> encoding style = "application / x-gzip "/> archived-checksum style =" SHA1 "> 5242cd71585c34e722932f324706f8c00e1ae0c5 / archived-checksum> extracted-checksum style =" SHA1 "> c0e013e53d829511835e2b429abb5198731e9a3e / extracted-checksum> / data> gid / g> id> > 20 / gid> user> / user> uid> 501 / uid> mode> 0664 / mode> type> file / type> name> foobar.html / name> / file > / file> / file> / file> / file> / toc> / xar>