Xar
XAR為可擴展歸檔格式(英語:eXtensible ARchive format)的縮寫,是一種開源文件歸檔器和其文件格式。它創建於OpenDarwin項目,並在Mac OS X 10.5及更高版本中用於軟件安裝例程,以及在Safari 5.0及更高版本中用於瀏覽器擴展安裝。 它取代了gzip壓縮的pax文件的使用。[2]
副檔名 | .xar , .pkg , .xip [1] |
---|---|
網路媒體型式 |
application/x-xar[1] |
統一類型標識 | com.apple.xar-archive |
最新版本 | 1.6.1 2012年9月17日 |
格式類型 | 歸檔文件 |
延伸自 | XML, gzip |
網站 | mackyle |
文件結構
.xar文件包含三部分:文件頭,目錄表(Table of Contents, TOC)和堆。 所有字段均按大端順序存儲。[4]
文件頭
偏移# | 長度(字節) | 描述 |
---|---|---|
0 | 4 | 文件特徵簽名,總是xar!
|
4 | 2 | 文件頭大小 |
6 | 2 | 文件版本,目前只有版本1 |
8 | 8 | TOC壓縮後大小 |
16 | 8 | TOC壓縮前大小 |
24 | 4 | 校驗和算法: |
28 | 0, 4 , 36 | 填充字節或校驗和算法名稱 |
目錄表(TOC)
與cpio,tar或ar的不同,Xar將TOC(目錄表)存儲在文件的開頭,這使得附加到歸檔文件變得更加複雜,但是好處是不必掃描整個歸檔文件來提取單個包含的文件。 TOC以UTF-8編碼的XML文檔存儲,zlib壓縮。[6][4] 存儲在Xar中的每個文件都經過獨立壓縮/編碼,可以使用不同的壓縮方法對不同文件進行編碼。在某些系統上,文件還可以通過xz或lzma壓縮方法進行編碼。[5]
TOC示例
<?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">
<data>
<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>Documents</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>
<group></group>
<gid>20</gid>
<user></user>
<uid>501</uid>
<mode>0664</mode>
<type>file</type>
<name>foobar.html</name>
</file>
</file>
</file>
</file>
</file>
</toc>
</xar>
參考來源
- ^ 1.0 1.1 application/x-xar. [2019-03-19]. (原始內容存檔於2019-03-27) (英語).
- ^ Nabble – xar in Mac OS X. [2020年9月21日]. (原始內容存檔於2007年2月7日).
- ^ rpm package manager. rpm5.org. [2020-09-21]. (原始內容存檔於2011-12-04).
- ^ 4.0 4.1 mackyle/xar. GitHub. [2020-09-21]. (原始內容存檔於2021-05-06).
- ^ 5.0 5.1 Braun, Rob; Fuller, Landon; Leimbach, David; Van Vechten, Kevin. xar - eXtensible ARchiver mojave man page. 2015-06-04 [2019-03-26].
- ^ Google Code Archive - Long-term storage for Google Code Project Hosting.. code.google.com. [2020-09-21]. (原始內容存檔於2021-10-29).