Xar
application/x-xar[1]
1.6.1
2012年9月17日,11年前(2012-09-17)
2012年9月17日,11年前(2012-09-17)
XAR为可扩展归档格式(英語:eXtensible ARchive format)的缩写,是一种开源文件归档器和其文件格式。它创建于OpenDarwin项目,并在Mac OS X 10.5及更高版本中用于软件安装例程,以及在Safari 5.0及更高版本中用于浏览器扩展安装。 它取代了gzip压缩的pax文件的使用。[2]
RPM的一个开发分支RPM5也使用xar。[3]
文件结构
![](http://upload.wikimedia.org/wikipedia/commons/thumb/8/8f/XAR_File_Structure.svg/220px-XAR_File_Structure.svg.png)
.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).
外部链接
|