Linux-tar

Linux-tar

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 精准过滤
相关推荐
艾莉丝努力练剑2 小时前
【Linux进程(一)】深入理解计算机系统核心:从冯·诺依曼体系结构到操作系统(OS)
java·linux·运维·服务器·git·编辑器·操作系统核心
被制作时长两年半的个人练习生2 小时前
使用rvv优化rms_norm
linux·llama·risc-v
艾莉丝努力练剑2 小时前
【Python基础:语法第六课】Python文件操作安全指南:告别资源泄露与编码乱码
大数据·linux·运维·人工智能·python·安全·pycharm
Bigan(安)4 小时前
【奶茶Beta专项】【LVGL9.4源码分析】09-core-global全局核心管理
linux·c语言·mcu·arm·unix
老王熬夜敲代码4 小时前
进程PCB
linux·笔记
草莓熊Lotso4 小时前
GCC/G++ 编译器完全指南:从编译流程到进阶用法(附实操案例)
linux·运维·服务器·网络·c++·人工智能·自动化
鸠摩智首席音效师10 小时前
linux 系统中 Shutting Down, Restarting, Halting 有什么区别 ?
linux·运维·服务器
CIb0la10 小时前
Linux 将继续不支持 HDMI 2.1 实现
linux·运维·服务器
德生coding11 小时前
wifi驱动编译出来的驱动文件怎么做strip
linux