tar 是什么
tar 是归档工具:把一堆文件和目录头尾相接打成一个流,本身不做压缩,压缩由后接的 gzip、xz、zstd 完成,所以同一套命令能生成 tar、tar.gz、tar.xz 各种格式。选项里的 -c 创建、-x 解包、-t 列表是三大动作,-f 指定归档文件名且必须紧跟其后。麒麟 V10、UOS、openEuler 预装的都是 GNU tar,脚本与备份流程里出现的 tar 命令在这三个平台上可以直接套用。
基本信息
| 所属 | GNU tar(POSIX 归档格式) |
|---|---|
| 适用平台 | Kylin V10 / UOS / openEuler / 各类 Linux |
| 语法 | tar [选项] -f 归档文件 [文件或目录...] |
| 压缩格式 | -z 用 gzip,-J 用 xz,--zstd 用 zstd |
| 切换目录 | -C 目录 指定起点,避免打进绝对路径 |
| 排除 | --exclude=模式,可重复多次 |
典型使用场景
- 备份目录前先打包:把整个应用目录压成一个文件再传输或归档
- 跨机器搬迁:打包后在目标机解到指定目录,省去逐个复制
- 发版包:把构建产物打成固定命名的压缩包交给运维或客户
- 收集取证材料:把日志目录整体打包,保留目录结构与权限
- 查看别人给的归档内容:不落地直接 tar tf 列表,判断是否可解
- 受限带宽传输:选压缩率更高的格式减小体积
典型用法
典型用法
tar czf app-$(date +%F).tgz -C /data app --exclude='app/cache' # 打包并排除缓存
ls -lh app-*.tgz # 确认产物大小合理
tar tzf app-2026-10-13.tgz | head # 解包前先看前几行内容
tar tzf app-2026-10-13.tgz | wc -l # 核对条目数量是否对得上
tar xzf app-2026-10-13.tgz -C /restore # 解到指定目录而不是当前目录
tar cJf big-archive.tar.xz -C /data huge # 高压缩率场景用 xz
rsync -avP app-2026-10-13.tgz backup:/data/ # 传到备份机常用选项对照
| 选项 | 作用 | 备注 |
|---|---|---|
| -c | 创建归档 | 常与 z、f 连写成 czf |
| -x | 解开归档 | 建议配 -C 指定目标目录 |
| -t | 只列内容不解包 | 陌生归档必做的一步 |
| -f | 指定归档文件 | 必须紧跟文件名,顺序不能乱 |
| -z / -J | gzip / xz 压缩 | gzip 快而通用,xz 小但耗 CPU |
| -C 目录 | 切换处理目录 | 打包与解包的起点 |
| --exclude | 排除匹配项 | 写相对路径,避免误排全部 |
| -p | 保留权限 | 解包时按需使用,root 下更完整 |
格式选择看用途:跨系统交付优先 tar.gz,通用性最好;留给归档、对体积敏感的选 tar.xz,代价是压缩慢且吃 CPU;新版系统上 zstd 兼顾速度与压缩率,但对方环境未必支持,交付前先确认。
用 -C 进目录再打包,包内路径就是相对路径,恢复时不会因为带前导斜杠而写进系统目录;只需要包内某一层内容时,可用 --strip-components=1 去掉最外层目录,避免解出多余的层级。