文章目录

  • 前言
    • 1.打包(归档)和压缩
    • 2.tar命令详解(打包和解包)
    • 3.tar命令详解(解压缩)
    • 4.zip命令详解
    • 5.unzip命令
    • 6.gzip命令
    • 7.gunzip命令
    • 8.bzip2
    • 9.bunzip2
    • 10. rar解压缩
  • 总结

前言

本小节讲解如何在linux当中进行解压缩,学习到命令包裹tar rar zip等相关命令。


1.打包(归档)和压缩

归档,也称为打包,指的是一个文件或目录的集合,而这个集合被存储在一个文件中。归档文件没有经过压缩,因此,它占用的空间是其中所有文件和目录的总和。
压缩文件也是一个文件和目录的集合,且这个集合也被存储在一个文件中,但它们的不同之处在于,压缩文件采用了不同的存储方式,使其所占用的磁盘空间比集合中所有文件大小的总和要小。

压缩是指利用算法将文件进行处理,达到保留最大文件信息,而让文件体积变小的目的。
基本原理为,通过查找文件内的重复字节,建立一个相同字节的词典文件,并用一个代码表示。比如说,在压缩文件中,有不止一处出现了 “mysql”,那么,在压缩文件时,这个词就会用一个代码表示并写入词典文件,这样就可以实现缩小文件体积的目的。

对文件进行压缩,很可能损坏文件中的内容,因此,压缩可以分为有损压缩和无损压缩。
无损压缩指数据必须准确无误;有损压缩指的是即便丢失个别的数据,对文件也不会造成太大的影响。有损压缩广泛应用于动画、声音和图像文件中,典型代表就是影碟文件格式 mpeg、音乐文件格式 mp3 以及图像文件格式 jpg。
采用压缩工具对文件进行压缩,生成的文件称为压缩包,该文件的体积通常只有原文件的一半甚至更小。压缩包中的数据无法直接使用,使用前需要利用压缩工具将文件数据还原,此过程又称解压缩。

Linux 下,常用的压缩命令有很多,比如 gzip、zip、bzip2 等。

2.tar命令详解(打包和解包)

Linux 系统中,最常用的归档命令就是 tar,该命令可以将许多文件一起保存到一个单独文件中。这个命令也可用作解压。
使用 tar 命令归档的包通常称为 tar 包(文件都是以“.tar”结尾的)。

tar命令做打包操作
当 tar 命令用于打包操作时,该命令的基本格式为:
[root@zaishu ~]#tar [选项] 源文件或目录

在使用 tar 命令指定选项时可以不在选项前面输入“-”。使用“cvf”选项和 “-cvf”起到的作用一样。

例1 打包文件和目录。

[root@zaishu ~]# tar -cvf aa.tar aa
aa
[root@zaishu ~]# ls
1  a  aa  aaa  aabbc  aa.tar  anaconda-ks.cfg  b  c  d  e  ip.sh  lamp-master  lamp-master.zip  sdcms_php_ee_2.4.2.zip  web  zs

打包时需要指定打包之后的文件名,而且要用 “.tar” 作为扩展名。

例2 打包目录也是如此:

[root@zaishu /]# tar -cvf root.tar root/
root/
....
root/aa.tar

#把目录打包为test.tar文件

例3 打包多个文件

[root@zaishu /]# tar -cvf zaishu.tar xx  home/
xx
home/
home/oracle/
home/oracle/.bash_logout
home/oracle/.bash_profile
home/oracle/.bashrc
home/oracle/.bash_history
[root@zaishu /]#

#把xx和home目录打包成zaishu.tar文件包

tar命令解包操作
该命令的基本格式如下: [root@localhost ~]#tar [选项] 压缩包
当用于解打包时,常用的选项与含义如表 2 所示。

例1. 解包到当前目录下
如果使用 “-xvf” 选项,则会把包中的文件解压到当前目录下。

[root@zaishu zaishu.cn]# tar -xvf zaishu.tar
xx
home/
home/oracle/
home/oracle/.bash_logout
home/oracle/.bash_profile
home/oracle/.bashrc
home/oracle/.bash_history

例2. 解包到指定位置,使用 “-C(大写)” 选项。
把文件包zaishu.tar解打包到zaishu.cn/目录下

[root@zaishu /]# tar -xvf zaishu.tar -C zaishu.cn/
xx
home/
home/oracle/
home/oracle/.bash_logout
home/oracle/.bash_profile
home/oracle/.bashrc
home/oracle/.bash_history

例3. 查看打包文件的内容,不解包
如果只想查看文件包中有哪些文件,则使用选项 “-t”,会显示里面文件的详细信息

[root@zaishu /]# tar -tvf zaishu.tar
-rw-r--r-- root/root         0 2021-10-22 17:10 xx
drwxr-xr-x root/root         0 2021-10-22 15:06 home/
drwx------ oracle/oracle     0 2021-10-22 15:06 home/oracle/
-rw-r--r-- oracle/oracle    18 2020-04-01 10:17 home/oracle/.bash_logout
-rw-r--r-- oracle/oracle   193 2020-04-01 10:17 home/oracle/.bash_profile
-rw-r--r-- oracle/oracle   231 2020-04-01 10:17 home/oracle/.bashrc
-rw------- oracle/oracle    89 2021-10-22 15:18 home/oracle/.bash_history

3.tar命令详解(解压缩)

压缩命令不能直接压缩目录,必须先用 tar 命令将目录打包,然后才能用 gzip 命令或 bzip2 命令对打包文件进行压缩。

tar命令可以同时对包进行打包和压缩,原理也是先打包,再进行压缩:
[root@localhost ~]#tar![

例1. 对已打包文件压缩
#gzip命令会把zaishu.tar压缩成zaishu.tar.gz

[root@zaishu /]# ls -l zaishu.tar
-rw-r--r-- 1 root root 10240 Oct 22 17:10 zaishu.tar
[root@zaishu /]# gzip zaishu.tar
[root@zaishu /]# ls -l zaishu.tar.gz
-rw-r--r-- 1 root root 615 Oct 22 17:10 zaishu.tar.gz  //可看到空间已经变小

例2. 压缩与解压缩 ".tar.gz"格式。
[root@localhost ~]# tar -zcvf tmp.tar.gz /tmp/
#把/tmp/目录直接打包压缩为".tar.gz"格式,通过"-z"来识别格式,"-cvf"和打包选项一致
解压缩在解打包选项 “-xvf” 前面加了一个 “-z” 选项。#解压缩与解打包".tar.gz"格式 “-C” 用于指定解压位置、"-t" 用于查看压缩包内容。

root@zaishu /]# tar -zcvf tmp.tar.gz tmp/   //打包并压缩
tmp/
tmp/.ICE-unix/
tmp/.X11-unix/
tmp/.XIM-unix/
tmp/.font-unix/
tmp/.Test-unix/
tmp/vmware-root_539-4248811709/
tmp/cgicwjYI/
[root@zaishu zaishu.cn]# tar -zxvf tmp.tar.gz   //解压包到当前位置
tmp/
tmp/.ICE-unix/
...
tmp/mysql.sock.lock

例3. 压缩与解压缩 “.tar.bz2” 格式。
压缩和打包选项是 “-jcvf”

[root@zaishu /]# tar -jcvf tmp.tar.bz2 tmp/
#打包压缩为".tar.bz2"格式,注意压缩包文件名

解压缩和解包选项 -jxvf

[root@zaishu zaishu.cn]# tar -jxvf tmp.tar.bz2

把文件直接压缩成".tar.gz"和".tar.bz2"格式,是 Linux 中最常用的压缩方式。

4.zip命令详解

[root@localhost ~]#zip [选项] 压缩包名 源文件或源目录列表
注意:zip命令,需要手工安装zip的包,可参照后面内容包的安装。

例1. zip 压缩文件

[root@zaishu ~]# zip cfg.zip anaconda-ks.cfg adding: anaconda-ks.cfg (deflated 48%)
[root@zaishu ~]# ll cfg.zip
-rw-r--r-- 1 root root 896 Oct 22 17:55 cfg.zip

例2. zip 压缩多个文件
压缩命令都可以同时压缩多个文件:
[root@zaishu log]# zip log.zip vmware-*.log
adding: vmware-network.1.log (deflated 63%)
adding: vmware-network.2.log (deflated 64%)
adding: vmware-network.3.log (deflated 64%)
adding: vmware-network.4.log (deflated 64%)
adding: vmware-network.log (deflated 65%)
adding: vmware-vmsvc-root.log (deflated 96%)
adding: vmware-vmtoolsd-root.log (deflated 77%)

[root@zaishu log]# ll log.zip
-rw-r–r-- 1 root root 32415 Oct 22 17:57 log.zip

例3. 使用 zip 命令压缩目录,需要使用“-r”选项:

[root@zaishu log]# zip -r tmp.zip /tmp/adding: tmp/ (stored 0%)adding: tmp/.ICE-unix/ (stored 0%)adding: tmp/.X11-unix/ (stored 0%)adding: tmp/.XIM-unix/ (stored 0%)adding: tmp/.font-unix/ (stored 0%)adding: tmp/.Test-unix/ (stored 0%)adding: tmp/vmware-root_539-4248811709/ (stored 0%)adding: tmp/cgicwjYI/ (stored 0%)adding: tmp/cgicwjYI/dummy.c (deflated 28%)adding: tmp/cgicwjYI/dummy.o (deflated 73%)adding: tmp/sess_d2a57fbc820a554efe86ed900d9f8f6d (deflated 44%)adding: tmp/vmware-root_530-2966037869/ (stored 0%)adding: tmp/vmware-root_527-4290035496/ (stored 0%)adding: tmp/mysql.sock.lock (stored 0%)adding: tmp/mysql.sock
zip warning: No such device or addresszip warning: could not open for reading: tmp/mysql.sockzip warning: Not all files were readablefiles/entries read:  14 (1.6K bytes)  skipped:  1 (0 bytes)
[root@zaishu log]# ls tmp.zip
tmp.zip

5.unzip命令

unzip 命令可以查看和解压缩 zip 文件。
[root@localhost ~]# unzip [选项] 压缩包名

例1. 解压
不论是文件压缩包,还是目录压缩包,都可以直接解压缩:

[root@zaishu zaishu.cn]# unzip tmp.zip
Archive:  tmp.zipcreating: tmp/creating: tmp/.ICE-unix/creating: tmp/.X11-unix/creating: tmp/.XIM-unix/creating: tmp/.font-unix/creating: tmp/.Test-unix/creating: tmp/vmware-root_539-4248811709/creating: tmp/cgicwjYI/inflating: tmp/cgicwjYI/dummy.c    inflating: tmp/cgicwjYI/dummy.o    inflating: tmp/sess_d2a57fbc820a554efe86ed900d9f8f6d  creating: tmp/vmware-root_530-2966037869/creating: tmp/vmware-root_527-4290035496/extracting: tmp/mysql.sock.lock

例2. 解压到指定位置
使用 -d 选项指定解压位置,把压缩包解压到指定位置:

[root@zaishu log]# unzip -d /zaishu.cn/ tmp.zip
Archive:  tmp.zipcreating: /zaishu.cn/tmp/creating: /zaishu.cn/tmp/.ICE-unix/creating: /zaishu.cn/tmp/.X11-unix/creating: /zaishu.cn/tmp/.XIM-unix/creating: /zaishu.cn/tmp/.font-unix/creating: /zaishu.cn/tmp/.Test-unix/creating: /zaishu.cn/tmp/vmware-root_539-4248811709/creating: /zaishu.cn/tmp/cgicwjYI/inflating: /zaishu.cn/tmp/cgicwjYI/dummy.c  inflating: /zaishu.cn/tmp/cgicwjYI/dummy.o  inflating: /zaishu.cn/tmp/sess_d2a57fbc820a554efe86ed900d9f8f6d  creating: /zaishu.cn/tmp/vmware-root_530-2966037869/creating: /zaishu.cn/tmp/vmware-root_527-4290035496/extracting: /zaishu.cn/tmp/mysql.sock.lock

6.gzip命令

gzip 是 Linux 系统中经常用来对文件进行压缩和解压缩的命令,生成的压缩包扩展名通常标记为“.gz”。gzip 命令只能用来压缩文件,不能压缩目录,即便指定了目录,也只能压缩目录内的所有文件。

gzip 命令的基本格式如下:
[root@localhost ~]# gzip [选项] 源文件
命令中的源文件,当进行压缩操作时,指的是普通文件;当进行解压缩操作时,指的是压缩文件。
gzip 命令常用选项及含义

例 1 基本压缩。
gzip 指定源文件名即可。会压缩空间,但注意源文件会消失

[root@prometheus ~]# ls -l anaconda-ks.cfg
-rw-------. 1 root root 1380 Oct 17 11:27 anaconda-ks.cfg
[root@prometheus ~]# gzip anaconda-ks.cfg
[root@prometheus ~]# ls -l anaconda-ks.cfg.gz
-rw------- 1 root root 752 Oct 17 11:27 anaconda-ks.cfg.gz

例 2 保留源文件压缩。
在使用 gzip 不加任何参数压缩文件时,源文件会消失。
-c选项,不让压缩数据输出到屏幕上,而是重定向到压缩文件中,这样压缩文件的同时不删除源文件

[root@prometheus ~]# gzip -c anaconda-ks.cfg > anaconda-ks.cfg.gz
[root@prometheus ~]# ls anaconda-ks.cfg*
anaconda-ks.cfg  anaconda-ks.cfg.gz

例 3 压缩目录

[root@zaishu.cn ~]# mkdir test
[root@zaishu.cn ~]# touch test/test1
[root@zaishu.cn ~]# touch test/test2
[root@zaishu.cn ~]# touch test/test3 #建立测试目录,并在里面建立几个测试文件
[root@zaishu.cn ~]# gzip -r test/
#压缩目录,并没有报错
[root@zaishu.cn ~]# ls
anaconda-ks.cfg anaconda-ks.cfg.gz install.log.gz install.log.syslog test
#但是查看发现test目录依然存在,并没有变为压缩文件
[root@zaishu.cn ~]# ls test/
testl .gz test2.gz test3.gz
#原来gzip命令不会打包目录,而是把目录下所有的子文件分别压缩

在 Linux 中,打包和压缩是分开处理的。而 gzip 命令只会压缩,不能打包,所以才会出现没有打包目录,而只把目录下的文件进行压缩的情况。

7.gunzip命令

gunzip 解压被 gzip 压缩过的文件(扩展名为 .gz),也可以使用 gzip -d 解压。
gunzip 命令的基本格式为:
[root@localhost ~]# gunzip [选项] 文件
该命令常用的选项及含义
例1. 解压文件。

[root@prometheus log]# gunzip yum.log.gz
解压还可以使用 "gzip -d"命令,例如:
[root@prometheus log]# gzip -d yum.log.gz

例2. 要解压缩目录下的内容,则需使用 “-r” 选项

[root@prometheus ~]# gunzip -r test/

例3. zcat
如果压缩的是一个纯文本文件,则可以直接使用 zcat 命令在不解压缩的情况下查看这个文本文件中的内容。例如:

[root@prometheus log]# zcat yum.log.gz
Oct 17 11:47:28 Updated: 1:grub2-common-2.02-0.87.el7.centos.7.noarch
Oct 17 11:47:28 Updated: centos-release-7-9.2009.1.el7.centos.x86_64
Oct 17 11:47:29 Updated: 1:grub2-pc-modules-2.02-0.87.el7.centos.7.noarch
Oct 17 11:47:29 Updated: ca-certificates-2021.2.50-72.el7_9.noarch
Oct 17 11:47:30 Updated: tzdata-2021c-1.el7.noarch
Oct 17 11:47:30 Updated: nss-softokn-freebl-3.67.0-3.el7_9.x86_64

8.bzip2

bzip2也只能对文件进行压缩(或解压缩),对于目录只能压缩(或解压缩)该目录及子目录下的所有文件。命令执行完成后,会生成一个以“.bz2”为后缀的压缩包。

bzip2 命令的基本格式如下:
[root@localhost ~]# bzip2 [选项] 源文件
常用的选项及各自如下:
gzip 不会打包目录,但使用“-r”选项,则可以分别压缩目录下的每个文件;而 bzip2 命令则根本不支持压缩目录,没有“-r”选项。

例1. 直接压缩文件。

[root@zaishu.cn ~]# bzip2 anaconda-ks.cfg
#压缩成".bz2"格式
此压缩命令会在压缩的同时删除源文件。

例2. 压缩的同时保留源文件。

[root@zaishu.cn~]# bzip2 -k install.log.syslog
#压缩
[root@zaishu.cn ~]# ls
anaconda-ks.cfg.bz2 install.loginstalLlogsyslog install.logsyslogbz2
#压缩文件和源文件都存在

9.bunzip2

对于“.bz2”结尾的压缩文件,可以使用“bzip2 -d 压缩包名”命令,还可以使用 bunzip2 命令。

bunzip2 [选项] 源文件
此命令常用的选项以及各自的含义

[root@zaishu.cn~]# bunzip2 anaconda-ks.cfg.bz2
".bz2" 格式也可以使用 "bzip2 -d 压缩包" 命令来进行解压缩,例如:
[root@zaishu.cn~]# bzip2 -d install.log.syslog.bz2
和 ".gz" 格式一样,".bz2" 格式压缩的纯文本文件也可以不解压缩直接查看,使用的命令是 bzcat。例如:
[root@zaishu.cn~]# bzcat install.log.syslog.bz2

注意:如果找不到命令,请安装bzip2软件包 yum install bzip2

10. rar解压缩

  1. 下载软件包
[root@prometheus ~]# wget http://www.rarlab.com/rar/rarlinux-x64-5.0.0.tar.gz
  1. 安装软件包
[root@prometheus ~]# tar -zxvf rarlinux-x64-5.0.0.tar.gz
[root@prometheus rar]# make && make install
  1. 报错处理(非必须)
    如果执行 rar 或者unrar 命令报错
rar: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by rar)
unrar: /lib64/libc.so.6: version `GLIBC_2.7' not found (required by unrar)

执行下面的拷贝

cp rar_static /usr/local/bin/rar
cp rar_static /usr/local/bin/unrar
  1. 归档
[root@prometheus ~]# rar a tmp.rar /tmp/RAR 5.00   Copyright (c) 1993-2013 Alexander Roshal   22 Aug 2013
Trial version             Type RAR -? for help
Evaluation copy. Please register.
Creating archive tmp.rar
Adding    /tmp/yum.log                                                OK
Adding    /tmp/ks-script-V9ygsD                                       OK
Done
  1. 解档
    unrar e Archive.rar DestPath
[root@prometheus ~]# unrar e tmp.rar
UNRAR 5.00 freeware      Copyright (c) 1993-2013 Alexander Roshal
Extracting from tmp.rar
Extracting  yum.log                                                   OK
Extracting  ks-script-V9ygsD                                          OK
All OK

总结

通过本小节的讲解,可以熟练掌握在Linux中如何处理文件或目录的解压缩。

5.Linux系统中解压缩详解相关推荐

  1. Linux系统守护进程详解

    文中有不对或者有不清楚的地方,请大家告诉我,谢谢!   Linux系统守护进程详解 不要关闭下面这几个服务: acpid, haldaemon, messagebus, klogd, network, ...

  2. linux系统scp命令详解

    文章目录 前言 一.scp命令语法 二.可选参数说明 三.常用示例 总结 前言 Linux系统scp命令用于Linux系统之间复制文件和目录的操作. 一.scp命令语法 scp [可选参数] file ...

  3. linux系统中解压缩zip文件

    在Linux系统中,可以使用unzip命令来解压zip文件,并可以将解压后的文件存放到指定的文件夹中. 具体的操作步骤如下: 1. 打开终端,在命令行中输入以下命令来安装unzip: sudo apt ...

  4. 最小的Linux系统制作过程详解

    http://club.topsage.com/thread-890315-1-1.html 一,什么是BabyLinux 二,为什么要做这样一个linux 三,什么人适合读这篇文档 四,应该具备的知 ...

  5. Linux系统调优详解(三)——CPU状态查看相关命令

    今天继续给大家介绍Linux运维相关知识,本文主要内容是CPU状态查看相关命令. 一./proc查看CPU状态 在Linux系统中,我们还经常使用以下命令来查看CPU状态: cat /proc/cpu ...

  6. Linux 系统 less命令详解

    Linux中的less命令是一个非常常用的文本查看工具,它可以用于查看任意大小的文本文件,支持滚动翻页.搜索.标记等功能.在本文中,我们将详细介绍less命令的用法.参数和实例,并对其背后的原理和相关 ...

  7. Linux中的configure命令作用,linux系统configure命令详解

    欢迎进入Linux社区论坛,与200万技术人员互动交流 >>进入 对于已经熟悉或者说习惯了Windows系统的朋友来说,Linux系统的软件安装,可以说并不是一件容易的事情;如果通过源代码 ...

  8. linux系统6.5详解,linux6.5下 简单配置 MINI 系统实现详解(1)

    一.linux系统启动流程介绍 我们来了解下linux系统的启动流程: 首先linux要通过POST自检过程(BIOS)-->如果想要做多块启动盘的话,还需要在bios中选择启动磁盘--> ...

  9. linux系统make命令详解

    无论是在Linux 还是在Unix环境 中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将 ...

  10. Linux 系统 top 命令详解

    文章目录 前言 top 命令关键词详解 1. VIRT:virtual memory usage 虚拟内存 2. RES:resident memory usage 常驻内存 3. SHR:share ...

最新文章

  1. java 基础知识三 java变量
  2. 前端参数无法转为后端实体内部类_Spring Boot返回前端Long型丢失精度
  3. Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理:
  4. R语言里面的循环变量
  5. 自动化系列-pyppeteer键盘输入点击
  6. SocketErrorCode:10022
  7. 解决ORA-00257: 归档程序错误。在释放之前仅限于内部连接
  8. 第2章第1讲数据类型及常量变量
  9. Gridiew——表的内容居中
  10. 精确地计算Web页面中滚动条的宽度
  11. 想进外企你应该知道的七大基本面试知识
  12. 基于Simulink的汽车电子驻车系统仿真分析
  13. laravel与thinkphp相比有哪些优势?他们之间的区别/优缺点在哪
  14. Python美化桌面—自制桌面宠物
  15. 【牛客网】C/C++牛客网专项刷题(04)
  16. 团队管理之领导力阅读感悟
  17. 单片机中段程序_单片机程序延时方法详细介绍
  18. 哈哈,原来这叫做“松鼠症”……并谈谈我建议的学习方法
  19. 衡量机器学习算法的准确性标准
  20. 草料二维码-免费的二维码生成工具

热门文章

  1. 《高效能程序员的修炼》一磨刀不误砍柴工
  2. html thead作用,html元素thead标签的使用方法及作用
  3. MQTT SSL加密单双向认证
  4. MaxCompute基本概念和数据类型
  5. SA的空间注意力和通道注意力
  6. 如何提高团队开发质量
  7. 系统操作手册_辽宁高考志愿填报系统2019操作手册(考生版)
  8. 开源OA:O2OA平台手机APP指纹认证的配置
  9. 计算机辅助在机械中的意义,浅谈计算机辅助设计技术在机械设计中的应用
  10. 印度人在接管硅谷的时候,中国人在做什么?