TAR 归档 (.tar)
POSIX.1-1988 标准磁带归档 (TAR) 是 Unix 和 Linux 中无处不在的文件打包格式,它将多个文件、目录和文件系统元数据组合成一个专为磁带备份和软件分发设计的未压缩流。
将 ZIP 转换为 TAR
免费的浏览器端 ZIP 转 TAR 转换器。在您的设备上即时转换文件。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 TAR 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 TAR 文件:
十六进制签名 (偏移量 257):
75 73 74 61 72ASCII 表示形式: ustar
标准化: POSIX.1-1988 (ustar) / POSIX.1-2001 (pax)
技术规格
| 容器架构 | Sequence of 512-byte blocks: 512-byte file header followed by file data rounded up to 512 bytes, ending with two zero blocks |
| 压缩方式 | Uncompressed archive container (designed to be piped into gzip, bzip2, xz, or zstd) |
| 字节序 | Octal ASCII string fields; big-endian numeric extensions |
| 色彩空间 | N/A (Archive Container) |
| 通道与结构 | Unix file directory tree, symlinks, hardlinks, character/block devices, and FIFO pipes |
| 最大尺寸 | 8 GB limit in classic ustar; practically unlimited in modern PAX format |
| 透明度 | Full preservation of POSIX file permissions, owner UID/GID, access times, and extended attributes |
| 流式传输与渐进式加载 | Sequential stream-oriented design: can be written directly to physical magnetic tape drives |
技术对比矩阵:TAR 对比同类产品
| 技术属性 | TAR (当前) | ZIP | 7Z | CPIO |
|---|---|---|---|---|
| 原生压缩 | 无(纯打包容器) | 内置 Deflate 压缩 | 内置 LZMA/LZMA2 压缩 | 无(纯打包容器) |
| Unix 权限保留 | 100% POSIX 属性、符号链接、UID/GID | 有限的 Unix 权限支持 | 保留基本权限 | 100% POSIX 属性 |
| 流式提取 | 支持从管道进行完整的流式提取 | 需要读取文件末尾 (EOF) 的中央目录 | 需要读取结束标头 | 支持完整的流式提取 |
| 文件的随机访问 | 慢(线性顺序扫描) | 即时(中央目录查找) | 中等(索引查找) | 慢(线性顺序扫描) |
常见损坏模式与十六进制恢复指南
提取错误:"tar: Skipping to next header"或"A lone zero block at X"。
根本原因: 损坏的 512 字节块对齐或流提前终止。
恢复方法: 使用"tar -i"提取以忽略损坏的块,或使用 File2File Tar 工具进行修复。
安全分析与解析器攻击向量
TAR 提取程序必须清理文件路径,以防止通过目录遍历攻击进行任意文件覆盖。
已知攻击向量
- "Slip"目录遍历(例如 '../etc/passwd'),在提取过程中覆盖关键系统文件。
- 符号链接竞争条件,创建指向系统目录的符号链接,随后进行文件写入。
- 通过循环硬链接循环进行拒绝服务。
防御性最佳实践:
历史渊源与里程碑
核心优势与特点
- 完美保留了完整的 Unix 文件系统保真度:POSIX 权限、符号链接、硬链接和所有权。
- 面向磁带的流式设计:可以直接从网络管道提取,而无需定位到文件末尾。
- 所有 Linux 服务器、容器镜像 (Docker/OCI) 和 Unix 软件发行版通用的标准。
技术局限与劣势
- 无原生压缩:未压缩的 .tar 文件的大小与合并后的原始文件大小大致相同。
- 随机访问速度慢:从大型归档文件的中间提取单个文件需要从头开始扫描。
- 传统的 ustar 标头会截断超过 100 个字符的文件名(在现代 PAX/GNU tar 中已解决)。
趣味技术冷知识
- 魔数"ustar"位于每个 512 字节标头块内部的字节偏移量 257 处。
- TAR 最初编写是为了物理控制 9 磁道盘式磁带驱动器。
- Docker 和 OCI 容器镜像实际上是包含根文件系统差异的标准 .tar 归档文件的堆叠集。
常见技术问题
为什么我的 .tar 文件没有被压缩?
TAR 仅仅是一个归档程序(它将多个文件打包成一个文件),本身并不进行压缩。若要对其进行压缩,请将其与 gzip 搭配使用以创建 .tar.gz 文件。
ustar 和 GNU tar 有什么区别?
Ustar 是 1988 年的 POSIX 标准,对文件名有 100 个字符的限制,而 GNU tar 是一种扩展格式,支持无限的路径长度和稀疏文件。
如何在 Windows 上打开 .tar 文件?
Windows 10 和 11 通过命令行('tar -xf file.tar')原生支持 tar,或者你也可以直接在网页浏览器中使用 File2File.app 进行可视化提取。