什么是一 .tar 文件?
带有 .tar 扩展名的文件是使用基于 Unix 的实用程序创建的存档,用于收集一个或多个文件。多个文件以未压缩格式存储,支持将文件和文件夹添加到存档中。 Unix 上的 TAR 实用程序是基于命令的,但几乎所有操作系统上的大多数文件归档系统都支持由此创建的文件。它由 AT&T 贝尔实验室于 1979 年首次创建,随后的版本随着时间的推移而出版。
TAR 文件格式
TAR 是一种开放的文件格式,具有可供开发人员参考的完整规范。它的文件结构在 POSIX.1-1988 和后来的 POSIX.1-2001 中标准化。 tar 创建的数据集保留有关文件系统参数的信息,例如:
- 姓名
- 时间戳
- 所有权
- 文件访问权限
- 目录组织
Tar 文件没有任何幻数。它包含一系列块,其中每个块都是 BLOCKSIZE 字节。
每个归档的文件都由一个描述文件的标题块表示,然后是零个或多个给出文件内容的块。在存档文件的末尾有两个 512 字节的块,用二进制零填充作为文件结束标记。一个合理的系统应该在档案的末尾写入这样的文件结束标记,但在读取档案时不能假设存在这样的块。特别是 GNU tar 如果没有遇到它,它总是会发出警告。
对于物理 I/O 操作,这些块可能会被阻塞。 n 个块的每个记录(其中 n 由 tar 的阻塞因子 = 512-size 选项设置)使用单个“write()“操作写入。在磁带上,这种写入的结果是一条记录。写入档案时,块的最后一条记录应以完整大小写入,零块之后的块包含全零。在读取档案时,一个合理的系统应该正确处理最后一条记录比其他记录短的档案,或者在零块之后包含垃圾记录的档案。
焦油标题
与任何其他文件头一样,tar 文件头记录包含有关文件的元数据,如下表所示。
字段偏移 | 字段大小(字节) | 字段 |
---|---|---|
0 | 100 | 文件名 |
100 | 8 | 文件模式 |
108 | 8 | 所有者的数字用户 ID |
116 | 8 | 组的数字用户 ID |
124 | 12 | 以字节为单位的文件大小(八进制) |
136 | 12 | 以数字 Unix 时间格式(八进制)的最后修改时间 |
148 | 8 | 标头记录校验和 |
156 | 1 | 链接指示符(文件类型) |
157 | 100 | 链接文件的名称 |
未使用的字段用 NUL 字节填充。标头由 257 个字节组成,用 NUL 字节填充以使其填充到 512 个字节的记录。