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).