tar 归档打包

把目录树打包为归档文件,可叠加压缩形成 .tar.gz 等格式;备份与迁移的通用载体,支持内容列表与按路径提取。

备份与容灾速查数据更新于 2026-10-13

tar 是什么

tar 把一组文件与目录打包成单个归档文件,本身不做压缩与加密,只负责保留目录结构以及权限、属主、时间戳等元数据。归档可再叠加 gzip、bzip2、xz、zstd 形成 .tar.gz、.tar.zst 等格式。它是备份与迁移场景最通用的载体,也是多数压缩工具的输入来源。

基本信息

常用动作-c 创建 / -x 解包 / -t 列表
指定文件-f 后紧跟归档文件名
压缩-z gzip、-j bzip2、-J xz、--zstd zstd
元数据保留权限、属主、时间戳与目录结构
适用范围Linux 与 macOS 自带;Windows 可用 bsdtar 或 WSL

创建、查看与解包

创建、查看与解包
tar -czf /backup/site-$(date +%F).tar.gz -C /var/www site   # 创建并 gzip 压缩
tar -tzf /backup/site-2026-10-12.tar.gz | head              # 查看内容不解包
tar -xzf /backup/site-2026-10-12.tar.gz -C /tmp/restore     # 解包到指定目录
tar -czf /backup/etc.tar.gz -C / etc                        # 备份配置目录
tar -tzf /backup/etc.tar.gz | wc -l                         # 条目数作基本校验

常用选项速记

常用选项速记
-c 创建  -x 解包  -t 列表  -f 指定归档文件  -C 切换目录  -v 显示过程
-z gzip  -j bzip2  -J xz  --zstd zstd(较新版本 tar 支持)
-p 保留权限  --exclude 排除路径  -T 从文件读取路径清单
--strip-components=N 提取时去掉前 N 层目录

常见组合与用途

命令组合用途备注
-czf创建 gzip 归档最通用的备份格式
-tzf列出归档内容恢复前核对路径
-xzf 加 -C解包到指定目录脚本中始终显式指定
-cf - 接管道流式压缩与传输免落盘中间文件
--listed-incremental增量归档需配合快照文件使用

典型使用场景

  • 目录备份:把站点目录或配置目录整体打包留存,便于快速回滚
  • 迁移与交付:跨主机同步整棵目录树,保留权限与属主信息
  • 误删恢复:从归档中按路径提取单个文件,不必整包解开
  • 流式备份:tar 与压缩、加密、网络传输串联,减少中间落盘
  • 增量归档:用 --listed-incremental 记录变化,降低每日备份量

与其他备份方式的分工

tar 产出独立归档文件,可离线保存、异地传输与长期归档,代价是每次都要重读全量数据;rsync 面向目录镜像,只传差异但不产生历史版本;存储快照依赖底层存储,恢复快但通常与源卷同位置。三者常组合使用:快照保证短时回滚,rsync 维持镜像副本,tar 归档保留历史版本。

校验归档完整性

校验归档完整性
tar -tzf /backup/site-2026-10-12.tar.gz > /dev/null   # 通读全包校验结构
sha256sum /backup/site-2026-10-12.tar.gz > site.sha256
sha256sum -c site.sha256                              # 传输后核对校验和
tar -dzf /backup/site.tar.gz -C /                     # 与现有文件逐项比对
-f 必须是选项组里的最后一个并紧跟归档文件名:tar -czf 与 tar -cfz 语义不同,后者会把 z 当成文件名的一部分。
解包默认在当前目录展开并覆盖同名文件,脚本中应始终显式加 -C 指定目录,必要时先解到临时目录核对再替换。

归档格式选择

格式压缩方式适用场景
.tar不压缩需要随机提取、后续自行压缩或加密
.tar.gzgzip 或 pigz兼容性最好,跨系统交付最稳妥
.tar.zstzstd速度与压缩率均衡,恢复时解压更快
.tar.xzxz压缩率优先,CPU 与内存开销偏大

打包前需要确认的点

  • 目录内是否含挂载点:跨文件系统打包会连带拉入其他卷内容,必要时使用 --one-file-system
  • 排除规则是否到位:缓存、临时文件与归档目标目录本身要排除,避免归档自我嵌套导致体积失控
  • 空间是否充足:目标位置剩余容量应大于预估归档体积,中途写满会得到不完整归档
  • 数据是否处于一致状态:数据库目录与活跃日志文件应先停写或用快照,否则存档可能停在半写状态
  • 恢复路径是否演练过:解包目标目录、属主与权限要求都应提前确认,而不是等故障当天摸索
tar 自身不提供加密:归档落在磁带或对象存储等易转移介质上时,应配合 gpg 或存储侧加密,并把密钥与归档分开保存。

易错点

  • -f 必须是选项组里的最后一个并紧跟文件名:tar -czf 与 tar -cfz 语义不同
  • 解包默认在当前目录展开,脚本中应始终显式加 -C 指定目录
  • 归档内记录绝对路径时解包会报警告或落到错误位置:创建时应先 -C 切到上级目录
  • 跨系统还原(如 Linux 归档还原到 Windows)时权限、属主与符号链接会丢失或行为不同
  • 只校验退出码不校验内容:归档可能因权限不足跳过部分文件,需核对条目数与关键文件

数据来源与参考

  • GNU tar 手册(创建与提取选项)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌