TAR 归档 (.tar)

POSIX.1-1988 标准

磁带归档 (TAR) 是 Unix 和 Linux 中无处不在的文件打包格式,它将多个文件、目录和文件系统元数据组合成一个专为磁带备份和软件分发设计的未压缩流。

将 ZIP 转换为 TAR

免费的浏览器端 ZIP 转 TAR 转换器。在您的设备上即时转换文件。

检查与元数据

操作系统和文件分析器通过检查开头的二进制字节序列来识别 TAR 文件:

选择或将文件拖放到此处

100% 浏览器端私密转换 - 文件绝不会离开您的设备

或粘贴 Ctrl+V
零网络传输隐私保证: 上传至外部服务器的数据为 0 字节。所有处理均在您的浏览器沙箱中本地完成。

字节级文件头签名 (Magic Bytes)

操作系统和文件分析器通过检查开头的二进制字节序列来识别 TAR 文件:

十六进制签名 (偏移量 257):

75 73 74 61 72

ASCII 表示形式: 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 (当前)ZIP7ZCPIO
原生压缩无(纯打包容器)内置 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'),在提取过程中覆盖关键系统文件。
  • 符号链接竞争条件,创建指向系统目录的符号链接,随后进行文件写入。
  • 通过循环硬链接循环进行拒绝服务。

防御性最佳实践:

历史渊源与里程碑

2001IEEE POSIX.1-2001 引入了 PAX(可移植归档交换)标准,打破了传统的 8 GB 大小限制。
1988IEEE POSIX 将"ustar"(Unix 标准 Tar)标头格式标准化。
1979由贝尔实验室在 Version 7 Unix (V7) 中引入,用于将文件树写入磁带驱动器。

核心优势与特点

  • 完美保留了完整的 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 进行可视化提取。