Linux里面的压缩和解压类指令

Posted 夜里码码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux里面的压缩和解压类指令相关的知识,希望对你有一定的参考价值。

gzip/gunzip 指令 ( .gz  不能压缩目录)

gzip 用于压缩文件, gunzip 用于解压的 。

gzip

gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率

没有的话手动安装


yum -y install zip gzip    (--安装压缩工具)

常用选项 


-c:-stdout在标准输出上写入,保持原始文件不变

-r:递归处理,将指定目录下的所有文件及子目录一并处理;

-v:显示指令执行过程;

-d:解开压缩文件;(decompression 解压)

-a:使用ASCII文字模式;

-f:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;

-h:在线帮助;

-l:列出压缩文件的相关信息;

-L:显示版本与版权信息;

-n:压缩文件时,不保存原来的文件名称及时间戳记;

-N:压缩文件时,保存原来的文件名称及时间戳记;

-q:不显示警告信息;

-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;

-t:测试压缩文件是否正确无误;

-V:显示版本信息;

-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;

--best:此参数的效果和指定“-9”参数相同;

--fast:此参数的效果和指定“-1”参数相同。

基本语法      


gzip 文件     (功能描述:压缩文件,只能将文件压缩为 *.gz 文件)       

应用实例      

压缩到指定目录 (需要加上参数 -c)

案例1: gzip压缩, 将 /home下的 hello.txt文件进行压缩            gzip /home/hello.txt

技术分享图片

案例2: gzip压缩, 将 /home下的 a.txt、b.txt、c.txt  文件进行压缩

技术分享图片

案例3:  把test目录下的每个文件压缩成 .gz 文件。 gzip  *

技术分享图片

案例4:  把案例4中每个压缩的文件解压,并列出详细的信息。 gzip -dv *

技术分享图片

案例5:  详细显示案例3中每个压缩的文件的信息,并不解压。gzip -l *

技术分享图片

案例6:  压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz。gzip -r log.tar

案例7:  递归的压缩目录。gzip -rv test

技术分享图片

技术分享图片

技术分享图片

这样,所有test下面的文件都变成了*.gz目录依然存在只是目录里面的文件相应变成了*.gz.这就是压缩,和打包不同。因为是对目录操作,所以需要加上-r选项,这样也可以对子目录进行递归了。

案例9: 递归地解压目录。gzip -dr test

技术分享图片

案例10:  为了保留原有的文件,我们可以加上 -c 选项并利用 linux 的重定向 ,这样不但可以将原有的文件保留,而且可以将压缩包放到任何目录中,解压缩也一样  。

压缩到指定目录: /home有两个目录 aaa bbb  aaa里面有文件a.txt,我把a.txt压缩到bbb目录里面。

gzip -c aaa/a.txt > bbb/test.gz
 

技术分享图片

技术分享图片

 把上面压缩的 test.gz  解压到指定 hehe 目录   gunzip -c bbb/test.gz > hehe/test.txt

如果是放在当前目录的话: gunzip -c bbb/test.gz > ./test.txt

技术分享图片

技术分享图片

细节说明

当我们使用gzip对文件进行压缩后,保留原来的文件

gunzip

gunzip命令用来解压缩文件。gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为 .gz 。事实上gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。( gzip –d等价于gunzip 命令)

基本语法      


gunzip 文件.gz    (功能描述:解压缩文件命令) 

常用选项


-a:使用ASCII文字模式;

-c:把解压后的文件输出到标准输出设备;

-f:强行解开压缩文件,不理会文件名称或硬连接是否存在以及该文件是否为符号连接;

-h:在线帮助;

-l:列出压缩文件的相关信息;

-L:显示版本与版权信息;

-n:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理;

-N:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上;

-q:不显示警告信息;

-r:递归处理,将指定目录下的所有文件及子目录一并处理;

-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;

-t:测试压缩文件是否正确无误;

-v:显示指令执行过程;

-V:显示版本信息;

 应用实例

案例1: gunzip压缩, 将 /home下的 hello.txt.gz 文件进行解压缩     gunzip hello.txt.gz

 技术分享图片


zip/unzip指令 .zip  

zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的 。

zip

zip 是我们最常用的压缩命令,通过该命令可以将目录或者文件压缩成扩展名为“ .zip ”的压缩文件。 

常用选项


  -r   递归处理,将指定目录下的所有文件和子目录进行压缩。 
  -f   仅将源目录下的发生变更的文件压缩到zip文件中,源目录下新增的文件不进行压缩。
  -u   与-f参数类似,但是除了更新的文件外,也会将源目录中的其它文件压缩到zip文件中。
  -m   将文件压缩到zip文件中,同时删除目录下的该文件。  
  -j   只保存文件名称及其内容,丢弃目录结构。
  -l   压缩文件时,将 LF 字符置换成 LF+CR 字符。
  -ll  压缩文件时,将 CR + LF 字符置换成 LF 字符。
  -1   压缩效率,值为1-9,1为压缩效率最高。
  -9   压缩效率,值为1-9,1为压缩效率最高。
  -v   显示指令执行过程、显示版本信息。
  -c   为每个被压缩的文件增加注释。
  -z   为zip文件增加注释。
  -o   以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同。
  -x   不压缩 -x 指定的文件。
  -i   只压缩 -i 指定的文件。
  -D   压缩文件内不建立目录。
  -A   调整可执行的自动解压缩文件。
  -J   删除压缩文件前面不必要的数据。
  -X   不保存额外的文件属性。
  -y   直接保存符号连接,而非该连接所指向的文件。
  -e   采用标准的PKZip 2.0进行加密,提示输入密码。
  -n   不压缩文件名以制定字符串结尾的文件。
  -h2  显示详细的帮助信息。

基本语法      


zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]  
zip      [选项] XXX.zip  需要压缩的内容(功能描述:压缩文件和目录的命令)  

应用实例      

案例1:  将 /home下的 所有文件进行压缩成 mypackage.zip    zip  -r  mypackage.zip  /home/   或者   zip  -r  mypackage.zip  /home/*        

技术分享图片

技术分享图片

案例2:  指定压缩目录    /home 有如下目录。 zip -r aaa/test.zip bbb/

技术分享图片

技术分享图片

unzip

通过 unzip 命令将扩展名为“ .zip ”的压缩文件进行解压缩。 

基本语法      


unzip [-Z] [-opts[modifiers]] file[.zip] [list] [-x xlist] [-d exdir]
unzip [选项] XXX.zip    (功能描述:解压缩文件)  

常用选项      


  -d  指定文件解压缩后所要存储的目录。
  -p  小写,将解压缩的文件数据以二进制格式(存储的格式)输出到屏幕上。
  -P  大写,使用 unzip 的密码选项。
  -l  显示压缩文件内所包含的文件。
  -t  测试压缩文件。
  -u  与-f参数类似,但是除了更新的文件外,也会将zip文件中的其它文件解压缩到目录中。    
  -z  显示压缩文件的注释。
  -T  把 zip 文件中的最新的文件时间设置为zip文件的timestamp。
  -x  不解压 -x 指定的文件。
  -q  设置为 quiet 模式。
  -qq 设置为 quieter 模式。
  -o  不必先询问用户,直接覆盖原有文件。   
  -a  将文本文件格式转换为本地操作系统的格式。
  -aa 将所有的文件作为文本文件来对待。
  -U  启用Unicode,显示以十六进制的 #Uxxxx 或者 #Lxxxxxx 进行 ASCII 文本转义的非本地字符。旧版本中 -U 将压缩文件中的全部文件名改为大写。
  -UU 启用Unicode,禁用使用UTF-8存储路径。UTF-8路径被处理成 Unicode 后,存储为本地路径。
  -L  将压缩文件中的全部文件名改为小写。
  -X  解压缩时恢复文件原来的UID/GID。            
  -V  保留VMS的文件版本信息。
  -M  将输出结果送到 more 管道中。
  -hh 显示详细的帮助信息。

应用实例      

案例2:  将 mypackge.zip 解压到 /opt/tmp 目录下      unzip –d /opt/tmp  mypackage.zip   [如果/opt/tmp 不存在,会自动创建]

技术分享图片

技术分享图片


 tar 指令  

tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。 [可以压缩,和解压]

基本语法


tar  [选项]  XXX.tar.gz  打包的内容/目录   (功能描述:打包目录,压缩后的文件格式.tar.gz)  

选项说明      

选项 功能
-c 产生 .tar 打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩 (压缩带上)
-x 解包 .tar 文件 (解压带上)

-c: 建立压缩档案
-x:解压
-t:查看内容
-r:向压缩归档文件末尾追加文件
-u:更新原压缩包中的文件

以上五个是独立的命令参数,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。

-z:有gzip属性的  gz
-j:有bz2属性的   bz2
-J :有xz属性的   xz
-Z:有compress属性的

-v:显示所有过程
-O:将文件解开到标准输出

下面的参数-f是必须的

-f: 使用档案名字,切记,这个参数是最后一个参数,后面只能接档案名。

应用实例      

案例1:   将所有 .jpg 的文件打成一个名为all.tar的包。  tar -cf all.tar  *.jpg  -c 是表示产生新的包,-f 指定包的文件名。

技术分享图片
案例2:   将所有 .gif 的文件增加到all.tar的包里面去, tar -rf all.tar *.gif  -r是表示增加文件的意思。 (这样解压的话是没有任何目录的)

tar -rf all.tar  /home/photo/*.gif   这样的话是有目录的

案例3:   列出all.tar包中所有文件,  tar -tf all.tar    -t是列出文件的意思

技术分享图片

案例3:   更新原来tar包 all.tar 中a.gif文件    tar -uf all.tar a.gif    -u是表示更新文件的意思。 

案例4:   解出all.tar包中所有文件, tar -xf all.tar   -x是解开的意思

案例5:  将目录里所有jpg文件打包成 tar.jpg 。tar -cvf jpg.tar *.jpg

案例6:  将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz 。

tar -czf jpg.tar.gz *.jpg

案例7:  将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2。

tar -cjf jpg.tar.bz2 *.jpg

案例8:  将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z。tar -cZf jpg.tar.Z *.jpg

案例9:  rar格式的压缩,需要先下载rar for linux。rar a jpg.rar *.jpg

案例10:  zip格式的压缩,需要先下载zip for linux。zip jpg.zip *.jpg

tar -xvf file.tar                    //解压 tar包

tar -xzvf file.tar.gz             //解压tar.gz

tar -xjvf file.tar.bz2            //解压 tar.bz2

tar -xZvf file.tar.Z              //解压tar.Z

tar -Jxvf fle.tar.xz              //解压tar.xz

unrar e file.rar                   //解压rar

unzip file.zip                      //解压zip

案例11:  压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成  a.tar.gz     tar -zcvf a.tar.gz a1.txt a2.txt

  技术分享图片

案例12:  将/home 所有的文件夹压缩成 myhome.tar.gz    tar -zcvf myhome.tar.gz  /home/ 

案例13:   将 a.tar.gz  解压到当前目录       tar -zxvf a.tar.gz  

案例14: 将myhome.tar.gz  解压到 /opt/tmp2目录下   tar -zxvf myhome.tar.gz -C  /opt/temp2 (temp2 需要手动创建)

细节:

指定解压到的那个目录,事先要存在才能成功,否则会报错。

总结

       1、*.tar 用 tar -xvf 解压

       2、*.gz 用 gzip -d或者gunzip 解压

       3、*.tar.gz和*.tgz 用 tar -xzf 解压   tar.xz  用 tar -Jxvf 解压

       4、*.bz2 用 bzip2 -d或者用bunzip2 解压

       5、*.tar.bz2用tar -xjf 解压

       6、*.Z 用 uncompress 解压

       7、*.tar.Z 用tar -xZf 解压

       8、*.rar 用 unrar e解压

       9、*.zip 用 unzip 解压

来源:https://blog.csdn.net/qq_40794973/article/details/86499246



以上是关于Linux里面的压缩和解压类指令的主要内容,如果未能解决你的问题,请参考以下文章

Linux指令 ----->时间日期类&搜索查找类&压缩解压类

linux 实用指令 -- 时间日期类搜索查找类压缩和解压类

在linux里面 在解压指令里面 tar xvzf /*解压的内容*/ -C / 这里面的C是啥意思,有啥作用。

linux解压和解压 tar

4_Linux_文件压缩和解压指令

Linux 解压缩的命令怎么用?