linux的压缩和解压命令、提取压缩包中的文件(tar、zip等)

tar包的压缩和解压

一般来说zvf都是要加的:
-z 压缩或解压格式 gzip
-v verbose详情(v是非必传,但是最好也加)
-f 指定压缩或解压文件

-c create新建文件,压缩的时候用c
-x extract抽取文件,解压的时候用x

tar -czvf test.tar.gz * # 所有文件压缩为test.tar.gz
tar -xzvf test.tar.gz  # 解压

tar命令压缩的时候是不用加-r的,因为默认会压缩所有文件。

zip的压缩

压缩很有用,例如压缩日志,压缩率一般在90%以上,非常强的。

-r 压缩的时候要用到,-r会把目录内的内容一起压缩

zip压缩:

# 压缩成 test.zip 把该目录下所有的文件
zip test.zip * 
unzip test.zip  

unzip的解压

-o 解压的时候会用到,表示覆盖已有内容
-d 解压到某个目录

如果需要解压到某个文件夹下,-d即可:

unzip -d test test.zip 

如果有文件夹,一定要记得加-r

虽然只是个小知识点,确实用血泪的教训换来的。
曾经压缩备份jdk。 天真的忘了加-r,结果恢复的时候傻眼了。

# -r表示递归。不加-r 文件夹的内容不会添加进来。
zip jdk1.7.0.zip ./* 
# 加 -r 所有内容都添加了
zip -r jdk1.7.0.zip ./* 

那么不加-r是什么效果呢?
文件夹也会压缩,但是里面的内容不会压缩。

zip 如何压缩并删除

例如一个文件我想直接压缩到zip中,源文件删除?
目前没找到,我都是先压缩,再执行rm命令。

zip提取压缩包中的文件

例如我们要提取jar包中的某个class文件,先用vim或zgrep 找到文件的全路径
再执行解压命令:
-j 不处理压缩文件中原有的目录路径。(这局话有点难懂,可以理解为解压的话,他的上级目录结构都会创建,加上这个参数,只解压出这个文件不创建目录)
-d 解压到的目录

unzip -j custom.jar BOOT-INF/classes/com/demo/QueueListener.class  -d ./ttt

查看 -l参数即可

unzip -l all.zip
apache-zookeeper-3.5.8-bin apache-zookeeper-3.5.8-bin.tar.gz bbb
zip -r all.zip /data/all -x “/data/all/all.txt”
–exclude=cc

zip其他

-r 递归压缩,将指定目录下的所有文件以及子目录全部压缩
-d 从压缩文件内删除指定的文件
-i “文件列表” 只压缩文件列表中的文件
-x “文件列表” 压缩时排除文件列表中指定的文件
-u 更新文件到压缩文件中
-m 将文件加入压缩文件压缩后,删除原始文件,即把文件移到压缩文件中
-F 尝试修复损坏的压缩文件
-T 检查压缩文件内的每个文件是否正确无误

-x 排除

-x 或者 --exclude

zip -r all.zip * -x *.txt 文档说 反斜杠是避免shell文件名替换,我也没懂什么意思
zip -r all.zip * -x *.txt

支持列表吗?
当然支持,以下2种写法都可以。
zip -r all.zip * -x a.txt -x b.txt
zip -r all.zip * -x a.txt b.txt

-x中的相对路径和绝对路径

zip -r all.zip * -x .txt 有效
zip -r all.zip * -x /data/all/aaa/
.txt 无效

如果要压缩的目录是相对路径。排除的子目录必须也是相对路径。
如果要压缩的目录是绝对路径。排除的子目录即可以是想对路径,也可以是绝对路径。

但是压缩目录如果是绝对路径,会带一堆文件夹。 所以就用相对路径吧。

磁盘满的日志处理

因为磁盘已经满了,一次性压缩可能会报没有空间的错误。
建议压缩一个,删除一个。 这样即使空余空间很小,也操作的过来。

# 压缩一个  删除一个
zip test.log test.log;  rm -f test.log; 

报错

missing end signature–probably not a zip file

执行zip命令的时候报这个错,这可奇怪了,从来没见过呢?
仔细看发现命令写错了,错误命令为:

zip -r * all.zip 

这是all.zip 和 * 写反了,真是什么错误都可能犯额。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值