【tar命令详解】

tar命令详解

一、tar 命令的基本语法

tar [选项] [归档文件名] [要打包/解压的文件/目录]

其中,选项是核心,常用选项可分为 “功能选项” 和 “压缩选项” 两类,且需注意:
选项可组合使用(如 -zcvf),且 -f(指定归档文件名)必须放在所有选项的最后(因为它后面需要紧跟文件名,否则会报错)。
选项前的 - 可省略(如 tar zcvf 与 tar -zcvf 效果一致)。

二、核心选项解析

tar 的核心选项,理解这些选项后,即可组合出绝大多数常用命令
tar 的核心选项,理解这些选项后,即可组合出绝大多数常用命令

三、常用场景与实例

1. 场景 1:打包(仅归档,不压缩)
将文件 / 目录打包成 未压缩的 tar 包(后缀通常为 .tar),核心选项 -cvf。
实例:
将 /home/user/docs 目录和 /home/user/photo.jpg 文件打包为 backup.tar:

tar -cvf backup.tar /home/user/docs /home/user/photo.jpg

解释:-c(创建)、-v(显示过程)、-f(指定包名 backup.tar)。
执行后,当前目录会生成 backup.tar,且终端会列出所有被打包的文件路径。
2.场景2:打包并压缩(3 种主流格式)
tar 本身不压缩,需结合 -z/-j/-J 调用压缩工具,生成带压缩的 tar 包。
tar三个压缩参数对比
实例(打包并压缩):
用 gzip 压缩:将 /home/user/docs 打包为 docs.tar.gz

tar -zcvf docs.tar.gz /home/user/docs

用 bzip2 压缩:将 /home/user/photos 打包为 photos.tar.bz2

tar -jcvf photos.tar.bz2 /home/user/photos

用 xz 压缩:将 /var/log 打包为 logs.tar.xz(排除 .log 文件)

tar -Jcvf logs.tar.xz --exclude=*.log /var/log

3. 场景 3:查看归档文件内容(不解压)
核心选项 -tvf(-t 查看,-v 显示详情,-f 指定包名),根据压缩格式添加 -z/-j/-J。
实例:
查看 docs.tar.gz 中的文件:

tar -ztvf docs.tar.gz

查看 logs.tar.xz 中的文件:

tar -Jtvf logs.tar.xz

执行后,终端会列出归档内所有文件的权限、大小、修改时间、路径等信息。
4. 场景 4:解压归档文件
核心选项 -xvf(-x 解压,-v 显示过程,-f 指定包名),根据压缩格式添加 -z/-j/-J,常用技巧是结合 -C 指定解压目录。
实例:
默认解压到当前目录:解压 docs.tar.gz 到当前目录

tar -zxvf docs.tar.gz

解压到指定目录:将 photos.tar.bz2 解压到 /tmp 目录(需确保 /tmp 存在)

tar -jxvf photos.tar.bz2 -C /tmp

解压特定文件:从 backup.tar 中仅解压 home/user/docs/readme.txt(路径需与归档内一致)

tar -xvf backup.tar home/user/docs/readme.txt

静默解压:若不需要显示过程,去掉 -v 即可(速度更快)

tar -Jxf logs.tar.xz -C /data/backup

5. 场景 5:特殊需求(打包时排除文件 / 解压覆盖)
打包排除多个文件:打包 /home/user 时,排除 .git 目录和 .txt 文件

tar -zcvf user.tar.gz --exclude=.git --exclude=*.txt /home/user

强制覆盖解压:若目标目录已存在同名文件,tar 默认会提示是否覆盖,添加 --overwrite 可强制覆盖(慎用!)

tar -zxvf docs.tar.gz --overwrite -C /home/user

四、常见错误与注意事项

1、-f 选项位置错误:
错误写法:tar -zcfv docs.tar.gz /home/docs(f 后面跟了 v,而非文件名)。
正确写法:tar -zcvf docs.tar.gz /home/docs(f 放在最后,紧跟文件名)。

2、解压时 “路径包含根目录” 问题:
若打包时用了绝对路径(如 /home/user/docs),解压后会生成完整的 /home/user/docs 路径。若想 “相对路径解压”,可在打包时去掉根目录(如用 home/user/docs 而非 /home/user/docs),或解压时用 --strip-components 剥离路径层级:

 #将 /home/user/docs 解压为当前目录下的 docs(剥离前2层 /home/user)
tar -zxvf docs.tar.gz --strip-components=2 /home/user/docs

3、压缩格式不匹配:若用 -z 解压 .tar.bz2 文件(如 tar -zxvf photos.tar.bz2),会报错 “无法识别的格式”,需对应正确的压缩选项(.tar.bz2-j)。

五、常用命令速查表

为方便快速查阅,整理高频使用的 tar 命令:
tar常用命令速查

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值