【建议收藏】一文全面解读Linux最常用的解压缩命令(tar、zip、unzip、gzip、guznip、bzip2、bunzip2)
一文全面解读Linux最常用的解压缩命令(tar、zip、unzip、gzip、guznip、bzip2、bunzip2),建议收藏
文章目录
大家好,我是老码农。
《码农说》公众号的第13篇文章来袭,今天分享一篇之前梳理过的Linux解压缩命令。
思维导图
按照惯例,我们先上思维导图,稍后会逐步展开介绍。
打开终端,进入CentOS
我是用Docker部署的CentOS,执行下面的命令进入CentOS操作系统
-
Step1:先执行
docker ps
查看启动中的容器,发现CentOS容器的IDa7d064b6d983
C:\Users\86135.000>docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a7d064b6d983 centos "/bin/bash" 6 minutes ago Up 6 minutes oldgeek-centos 26ffb592e1f9 mysql:8.0.27 "docker-entrypoint.s…" 10 days ago Up 9 minutes 33060/tcp, 0.0.0.0:3386->3306/tcp mysql-db-1 7bc836d62b67 portainer/portainer-ce:latest "/portainer" 10 days ago Up 9 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:9443->9443/tcp, 9000/tcp portainer 1c0904b11353 nginx "/docker-entrypoint.…" 10 days ago Up 9 minutes 0.0.0.0:80->80/tcp nginx
-
Step2: 执行
docker exec
命令进入容器内部C:\Users\86135.000>docker exec -it a7d064b6d983 /bin/bash [root@a7d064b6d983 /]#
-
Step3:创建文件夹:
oldgeek
[root@a7d064b6d983 /]# mkdir oldgeek [root@a7d064b6d983 /]#
-
Step4:切换目录,然后用
vi
命令创建一个文件,文件中输入写内容,尽量多输入些内容,便于比较后面的压缩率。[root@a7d064b6d983 /]# cd oldgeek [root@a7d064b6d983 oldgeek]# vi test.in
-
Step5:我们可以在创建一些示例用的文件夹或者文件,例如下面,大家根据自己情况创建即可
[root@a7d064b6d983 oldgeek]# mkdir test [root@a7d064b6d983 oldgeek]# cd test [root@a7d064b6d983 test]# vi 1.in
-
Step6: 我创建的文件夹目录结构大致如下
[root@a7d064b6d983 oldgeek]# ls -la total 12976 drwxr-xr-x 3 root root 4096 Jan 6 01:03 . drwxr-xr-x 1 root root 4096 Jan 6 00:57 .. -rw------- 1 root root 13266944 Jan 6 00:59 .test.swp drwxr-xr-x 2 root root 4096 Jan 6 01:05 test -rw-r--r-- 1 root root 908 Jan 6 01:00 test.in [root@a7d064b6d983 oldgeek]#
tar
命令
重要参数
下面只列出一些常用参数,参数很多,其他参数请查阅帮助文档
参数 | 描述 |
---|---|
-c | 建立新的压缩文件 |
-v | 显示操作过程 |
-f | 指定压缩文件 |
-z | 支持gzip解压文件 |
-x | 从压缩的文件中提取文件 |
-r | 添加文件到已经压缩的文件 |
-t | 显示压缩文件的内容 |
-add-file | 向包中添加文件 |
tar命令
- 压缩:默认执行tar命令打包压缩成的文件后缀为.tar.gz;
压缩示例1:只压缩文件tar -cvzf
-cvzf
:参数,表示创建一个压缩文件,并显示压缩过程,参数含义参照上面的表格test.tar.gz
: 压缩后的文件名称test.in
:被压缩的文件
[root@a7d064b6d983 oldgeek]# tar -cvzf test.tar.gz test.in
test.in
[root@a7d064b6d983 oldgeek]# ls
test test.in test.tar.gz
[root@a7d064b6d983 oldgeek]#
执行完毕后会多出一个文件test.tar.gz
压缩示例2:压缩文件夹和目录tar -cvzf
- 最后的参数
test
是文件夹名称
[root@a7d064b6d983 oldgeek]# tar -cvzf folder-test.tar.gz test
test/
test/1.in
[root@a7d064b6d983 oldgeek]#
显示压缩包中有哪些文件tar tvf
[root@a7d064b6d983 oldgeek]# tar -tvf folder-test.tar.gz
drwxr-xr-x root/root 0 2024-01-06 01:05 test/
-rw-r--r-- root/root 67 2024-01-06 01:05 test/1.in
往压缩包中添加文件tar -rzf
[root@a7d064b6d983 oldgeek]# tar -rzf folder-test.tar.gz test.in
tar: Cannot update compressed archives
Try 'tar --help' or 'tar --usage' for more information.
错误解读:我们看提示出错了,是因为压缩包folder-test.tar.gz
,是先归档,再压缩的文件,就不支持压缩了。
继续尝试tar -cvf
压缩文件
tar -cvf folder-cvf.tar.gz test
: 使用参数-cvf
压缩文件tar -rf folder-cvf.tar.gz test.in
: 使用参数-rf
添加文件tar -tf folder-cvf.tar.gz
: 使用参数-tf
显示文件
注意:虽然刚才生成的压缩包文件folder-cvf.tar.gz
, 仅仅是归档,因为没加参数z
,并未使用gzip
压缩,如果加参数z
就不能添加文件了。
[root@a7d064b6d983 oldgeek]# ls
folder-test.tar.gz test test.in test.tar.gz
[root@a7d064b6d983 oldgeek]# tar -cvf folder-cvf.tar.gz test
test/
test/1.in
[root@a7d064b6d983 oldgeek]# tar -rf folder-cvf.tar.gz test.in
[root@a7d064b6d983 oldgeek]# tar -tf folder-cvf.tar.gz
test/
test/1.in
test.in
[root@a7d064b6d983 oldgeek]#
删除压缩包中的文件
-
在不解压情况我们也可以删除压缩包中的文件,参数
--delte
,如下面的示例tar --delete -f folder-cvf.tar.gz test.in
: 删除test.in
文件tar -tvf folder-cvf.tar.gz
: 确认删除后的文件中是否有test.in
文件
[root@a7d064b6d983 oldgeek]# tar --delete -f folder-cvf.tar.gz test.in [root@a7d064b6d983 oldgeek]# tar -tvf folder-cvf.tar.gz drwxr-xr-x root/root 0 2024-01-06 01:05 test/ -rw-r--r-- root/root 67 2024-01-06 01:05 test/1.in
解压tar.gz
到指定目录
-
加
-C
参数,后面指定文件即可[root@a7d064b6d983 oldgeek]# mkdir tmp [root@a7d064b6d983 oldgeek]# tar -xvf folder-cvf.tar.gz -C tmp test/ test/1.in [root@a7d064b6d983 oldgeek]# ls tmp test [root@a7d064b6d983 oldgeek]#
解压tar.gz
到当前目录
-
不加
-C
参数,后面指定文件即可[root@a7d064b6d983 oldgeek]# tar -xvf folder-cvf.tar.gz
解压包中指定文件
-
先查看压缩包的目录结构
[root@a7d064b6d983 oldgeek]# tar -tvf folder-cvf.tar.gz drwxr-xr-x root/root 0 2024-01-06 01:05 test/ -rw-r--r-- root/root 67 2024-01-06 01:05 test/1.in
-
然后直接压包中的
1.in
文件[root@a7d064b6d983 oldgeek]# tar -xvf folder-cvf.tar.gz test/1.in test/1.in [root@a7d064b6d983 oldgeek]#
zip
命令
-
简介:压缩成
zip
格式的包 -
重要参数
参数 说明 -r 递归处理,将指定目录下的所有文件和子目录一并处理 -v 显示指令执行过程或显示版本信息 -d 从压缩文件内删除指定的文件 -u 更换较新的文件到压缩文件内 - <压缩效率> 压缩效率是一个介于1-9的数值 -
示例
当前文件夹
[root@5b90876298f9 oldgeek]# ls t1.in test [root@5b90876298f9 oldgeek]#
压缩示例1
zip test.zip test
: 压缩test目录下,因为没加-r
实际只压缩了文件夹,并不包含文件
[root@5b90876298f9 oldgeek]# zip test.zip test adding: test/ (stored 0%) [root@5b90876298f9 oldgeek]# ls t1.in test test.zip [root@5b90876298f9 oldgeek]#
压缩示例2:注意,加参数
-r
才会递归压缩文件夹中文件[root@5b90876298f9 oldgeek]# zip -r test.zip test adding: test/ (stored 0%) adding: test/t2.out (deflated 19%) [root@5b90876298f9 oldgeek]#
压缩示例3:想压缩包中添加文件
[root@5b90876298f9 oldgeek]# ls t1.in t3.in test test.zip tmp [root@5b90876298f9 oldgeek]# zip -u test.zip t3.in adding: t3.in (stored 0%) [root@5b90876298f9 oldgeek]#
unzip
命令
-
简介:解压
zip
格式的包 -
重要参数
参数 说明 -l 显示压缩文件内所包含的文件 -v 显示指令执行过程或显示版本信息 -d 指定解压目录,目录不存在会创建 -
示例
- 解压文件
unzip test.zip -d tmp
, 加-d
指定解压目录,不加是当前目录
[root@5b90876298f9 oldgeek]# mkdir tmp [root@5b90876298f9 oldgeek]# unzip test.zip -d tmp Archive: test.zip creating: tmp/test/ [root@5b90876298f9 oldgeek]# ls tmp test [root@5b90876298f9 oldgeek]# ls tmp/test [root@5b90876298f9 oldgeek]#
- 解压文件
gzip
命令
-
简介:
-
重要参数
参数 说明 -c 保留源文件 -r 递归处理,将指定目录下的所有文件及子目录一并处理 -v 显示指令执行过程 -d 解开压缩文件 -
示例1
[root@5b90876298f9 oldgeek]# gzip -rv test/* test/t2.out: 19.4% -- replaced with test/t2.out.gz [root@5b90876298f9 oldgeek]# ls test t2.out.gz [root@5b90876298f9 oldgeek]#
gunzip
命令
-
简介:解压
gz
格式文件 -
示例1:
gunzip t2.out.gz
是解压命令[root@5b90876298f9 oldgeek]# cd test [root@5b90876298f9 test]# ls t2.out.gz [root@5b90876298f9 test]# gunzip t2.out.gz [root@5b90876298f9 test]# ls t2.out [root@5b90876298f9 test]#
bzip2
命令
-
简介:压缩率比较高的一种压缩格式,.bz2扩展名的文件就是bzip2压缩的结果,tar中加
-j
参数来调用bzip2 -
重要参数
参数 说明 -z 压缩文件 -d 解压文件 -k 源文件不删除 -
示例1:压缩
[root@5b90876298f9 oldgeek]# bzip2 -kz test/* [root@5b90876298f9 oldgeek]# ls t1.in t3.in test tmp [root@5b90876298f9 oldgeek]# cd test/ [root@5b90876298f9 test]# ls t2.out t2.out.bz2 [root@5b90876298f9 test]#
-
示例2: 解压
[root@5b90876298f9 test]# bzip2 -d t2.out.bz2 [root@5b90876298f9 test]# ls t2.out [root@5b90876298f9 test]#
-
示例3:执行
bzip2 -kz test/*
, 并不是压缩成一个压缩包,而是每个文件一个压缩包,这个是注意点。[root@5b90876298f9 oldgeek]# ls test t2.out t3.out [root@5b90876298f9 oldgeek]# bzip2 -kz test/* [root@5b90876298f9 oldgeek]# ls test t2.out t2.out.bz2 t3.out t3.out.bz2 [root@5b90876298f9 oldgeek]#
bunzip2
-
简介:与
bzip2
相反,是解压bz2
格式文件 -
重要参数
参数 说明 -z 压缩文件 -d 解压文件 -f 覆盖已有的文件 -k 源文件不删除 -
示例1
bunzip2 -d t3.out.bz2
因为没有加参数-f
所以会提示出错
[root@5b90876298f9 test]# ls t2.out t2.out.bz2 t3.out t3.out.bz2 [root@5b90876298f9 test]# bunzip2 -d t3.out.bz2 bunzip2: Output file t3.out already exists. [root@5b90876298f9 test]# rm -Rf t3.out [root@5b90876298f9 test]# bunzip2 -d t3.out.bz2 [root@5b90876298f9 test]# ls t2.out t2.out.bz2 t3.out
我是老码农
大家好!我是老码农。今天关于redis stack的安装就分享到这里。
关注《码农说》,期待未来能与更多的同学有深入的交流,一同学习技术,共同成长。
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!