Linux-tar
- Linux-tar
- 作用
- 格式
- 参数
- 1、核心基础参数
- 2、压缩算法参数(仅配合 `-c` 用,决定压缩格式)
- 3、权限/文件属性保留参数
- 4、路径/过滤控制参数
- 5、输出/交互参数
- 6、进阶功能参数
- 7、最常用的参数组合示例
Linux-tar
作用
tar是 Linux 系统中最核心的归档/压缩工具,参数体系可分为基础操作(必记)、压缩算法、权限/属性保留、路径/过滤控制、输出/交互、进阶功能六大类,以下是全网最清晰的参数拆解(附作用+示例),覆盖日常使用 99% 的场景:
格式
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 /opt2. 归档时切换目录: 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精准过滤 |