Linux-tar
- Linux-tar
-
- 作用
- 格式
- 参数
-
- 1、核心基础参数
- [2、压缩算法参数(仅配合 `-c` 用,决定压缩格式)](#2、压缩算法参数(仅配合
-c用,决定压缩格式)) - 3、权限/文件属性保留参数
- 4、路径/过滤控制参数
- 5、输出/交互参数
- 6、进阶功能参数
- 7、最常用的参数组合示例
Linux-tar
作用
tar 是 Linux 系统中最核心的归档/压缩工具,参数体系可分为 基础操作(必记) 、压缩算法 、权限/属性保留 、路径/过滤控制 、输出/交互 、进阶功能 六大类,以下是全网最清晰的参数拆解(附作用+示例),覆盖日常使用 99% 的场景:
格式
bash
tar [参数] 文件名
参数
1、核心基础参数
这类参数控制 tar 的「核心动作」(创建/解压/查看归档),是所有操作的基础,必须搭配 -f 使用(指定归档文件名)。
| 参数 | 全称/含义 | 核心作用 | 示例(单独/组合) | 注意事项 |
|---|---|---|---|---|
-c |
create | 创建新的归档文件(打包/压缩) | tar -cf test.tar /tmp/file(仅打包) tar -zcf test.tar.gz /tmp/file(打包+gzip压缩) |
「创建模式」核心参数,不能与 -x/-t 同时用 |
-x |
extract | 解压/提取归档文件中的内容 | tar -xf test.tar.gz(解压到当前目录) tar -zxf test.tar.gz -C /opt(指定解压目录) |
「解压模式」核心参数,不能与 -c/-t 同时用 |
-t |
list | 查看归档文件的内容(不解压) | tar -tf test.tar.gz(列出所有文件) tar -zvtf test.tar.gz(显示详细信息) |
「查看模式」核心参数,仅预览,不修改文件 |
-f |
file | 指定归档文件的名称 | 所有操作必须加 -f,且必须放在参数最后 |
示例:tar -zcvf xxx.tar.gz 源文件(-f 后紧跟文件名),错误写法:tar -zcfv xxx.tar.gz(-f 不在最后会报错) |
2、压缩算法参数(仅配合 -c 用,决定压缩格式)
tar 本身仅「归档」,需结合以下参数启用压缩算法,生成不同后缀的压缩包:
| 参数 | 对应算法 | 生成格式 | 压缩比/速度 | 示例 |
|---|---|---|---|---|
-z |
gzip | .tar.gz(最常用) |
压缩比中等,速度最快 | tar -zcf test.tar.gz /data |
-j |
bzip2 | .tar.bz2 |
压缩比高于 gzip,速度稍慢 | tar -jcf test.tar.bz2 /data |
-J |
xz | .tar.xz |
压缩比最高,速度最慢(适合大文件) | tar -Jcf test.tar.xz /data |
-Z |
compress | .tar.Z |
老旧算法,几乎淘汰 | 不推荐使用 |
解压时无需指定算法!tar 会自动识别:
tar -xf test.tar.xz即可(无需加-J)。
3、权限/文件属性保留参数
这类参数确保归档/解压后文件的权限、上下文等属性不变,避免系统配置/备份文件异常。
| 参数 | 作用 | 适用场景 | 示例 |
|---|---|---|---|
-p |
保留文件的原始权限(uid/gid、读写执行权限) | 备份系统文件(/etc、/var)、运维脚本 | tar -zcvpf backup.tar.gz /etc |
-P |
保留文件的绝对路径(默认会去掉根目录 /) |
需精准恢复绝对路径的场景 | tar -zcf test.tar.gz -P /tmp/file(归档后路径为 /tmp/file,而非 tmp/file) |
--selinux |
保留 SELinux 上下文(仅 CentOS/RHEL 等有 SELinux 的系统) | 备份 web 服务、数据库文件(避免恢复后 SELinux 拦截) | tar -zcvpf --selinux backup.tar.gz /var/www |
-h |
跟随软链接(归档软链接指向的实际文件,而非软链接本身) | 软链接指向重要文件时(如 /etc/nginx.conf 是软链接) | tar -zcf nginx.tar.gz -h /etc/nginx.conf |
--acls |
保留 ACL 权限(扩展权限控制) | 多用户权限复杂的场景(如共享存储) | tar -zcf data.tar.gz --acls /data/share |
4、路径/过滤控制参数
控制归档/解压的路径、排除/包含指定文件,解决「批量处理」「精准归档」需求。
| 参数 | 作用 | 示例 |
|---|---|---|
-C |
切换到指定目录(解压/归档时用) | 1. 解压到指定目录:tar -zxf test.tar.gz -C /opt 2. 归档时切换目录:tar -zcf test.tar.gz -C /tmp file1(归档 /tmp/file1,但归档内路径为 file1) |
--exclude |
排除指定文件/文件夹(支持通配符) | tar -zcf test.tar.gz /data --exclude=/data/tmp --exclude="*.log" |
--include |
仅包含指定文件/文件夹(需配合 --exclude="*" 使用) |
tar -zcf log.tar.gz /var/log --exclude="*" --include="*.log"(仅归档 .log 文件) |
--wildcards |
启用通配符匹配(兼容老旧系统) | tar -zcf test.tar.gz --wildcards '/data/*.txt' |
5、输出/交互参数
| 参数 | 作用 | 示例 |
|---|---|---|
-v |
显示详细过程(verbose):列出每个归档/解压的文件 | tar -zcvf test.tar.gz /data(实时显示打包的文件) |
-q |
安静模式:仅输出错误信息,无正常日志 | tar -zcf test.tar.gz /data -q(脚本自动化时用) |
-w |
交互模式:每处理一个文件都询问是否确认 | tar -zcf test.tar.gz /data -w(谨慎操作时用) |
-S |
稀疏文件优化:高效归档稀疏文件(如虚拟机磁盘、数据库文件) | tar -zcf vm.tar.gz -S /var/lib/libvirt/images |
6、进阶功能参数
| 参数 | 作用 | 示例 |
|---|---|---|
-r |
追加文件到已存在的 tar 归档(仅未压缩的 .tar 文件,压缩包不支持) | tar -rf test.tar newfile.txt |
-u |
更新归档:仅添加比归档内更新的文件 | tar -uf test.tar /data/newfile.txt |
-k |
解压时保留现有文件(不覆盖) | tar -zxf test.tar.gz -k |
--totals |
归档完成后显示总字节数 | tar -zcf test.tar.gz /data --totals |
--split=size |
分卷归档(拆分大文件) | tar -zcf - /data --split=1G > data.tar.gz.part(拆分为 1GB/卷) |
7、最常用的参数组合示例
| 场景 | 命令 | 核心参数说明 |
|---|---|---|
| 打包+gzip 压缩(保留权限) | tar -zcvpf backup.tar.gz /etc |
-z(gzip)+-c(创建)+-v(详细)+-p(保留权限)+-f(指定文件名) |
| 解压到指定目录 | tar -zxf backup.tar.gz -C /opt/restore |
-x(解压)+-z(识别gzip)+-f+-C(指定目录) |
| 查看压缩包内容 | tar -tf backup.tar.gz |
-t(查看)+-f |
| 仅压缩指定类型文件 | tar -zcf log.tar.gz /var/log --exclude="*" --include="*.log" |
--exclude+--include 精准过滤 |