GNU tar 入门:归档不压缩,配合 gzip/xz/zstd 生成 .tar.gz
版本 1.35
GNU tar 是类 Unix 系统上最常用的一款归档打包工具。它本身只负责把一堆文件和目录「打包」成一个 .tar 文件,并不做压缩;真正的压缩要交给 gzip、xz、zstd 这类算法,于是才有了我们常见的 .tar.gz、.tar.xz、.tar.zst 等格式。
打包与压缩分工
理解 tar 的关键,是把它和压缩分开看:tar 把多个文件串成一个连续的归档流,保留目录结构与文件权限;压缩工具再对这个流做体积缩减。两者用管道组合,例如 tar 加 -z 调用 gzip、-j 调用 bzip2、-J 调用 xz。这样设计让 tar 能搭配任意压缩算法,而不必绑定某一种。相比之下,zip 是把归档和压缩一步完成的格式,两者思路并不相同。
常用操作
建立归档:tar -cf 备份.tar 目录/。打包并压缩:tar -czf 备份.tar.gz 目录/。解包:tar -xf 备份.tar.gz,tar 会自动识别压缩类型,不必记参数。查看内容而不解压:tar -tf 备份.tar.gz。需要看进度可加 -v,排除某些文件用 --exclude,从标准输入读取可配合 -。如果只想找回某一个文件,在解包命令后补上路径即可:tar -xf 备份.tar.gz 路径/文件,不必解开整个包。这些命令在 Linux 与 macOS 的终端里都能直接用,是运维和开发的基本功。
进阶用法
tar 还支持增量备份:用 -g 快照文件,只打包上次以来变化的文件,适合做定期差异化备份。它也能妥善处理很长的文件名与符号链接,并遵循 POSIX 标准,保证在不同系统间迁移时目录结构不乱。配合 ssh,还能把归档直接传到远程机器,省去本地落盘这一步。
为什么它长期是基石
软件发布、源码分发、系统备份几乎都绕不开 tar。它格式开放、跨平台、被几乎所有 Linux 发行版预装,多年来保持稳定兼容。即便后来出现了更现代的归档格式,tar 也凭借庞大的生态惯性,仍是事实上的标准之一。
实用小技巧
想直接看压缩包里某个文件的内容,可以配合 zcat 之类的工具读取,不必先落盘;例如 zcat 备份.tar.gz | tar -xOf - 路径/文件 就能提取单个文件到标准输出。把 -g 快照和系统的定时任务结合,还能自动做出「全量加增量」的备份链条,既省空间又方便回滚到任意时间点。
许可与获取
GNU tar 以 GPLv3 发布,属于自由软件,任何人都能自由使用、修改与再分发。到官网了解详情与下载源码,或直接用系统包管理器安装即可;Windows 用户也能在 WSL、Git Bash 等环境里调用到它。