ubantu 文件解压缩

  对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见 的压缩文件就只有两种,一是,zip,另一个是.rar。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的 压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些 常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被搞晕。

  在具体总结各类压缩文件之前呢,首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压 缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就 得先借助另它的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行压缩。

ZIP

zip可能是目前使用得最多的文档压缩格式。它最大的优点就是在不同的操作系统平台,比如Linux, Windows以及Mac OS,上使用。缺点就是支持的压缩率不是很高,而tar.gz和tar.gz2在压缩率方面做得非常好。闲话少说,我们步入正题吧:

linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。常用命令选项:

-d   从压缩文件内删除指定的文件,要解压到指定目录需要在目录前指定-d。

-m  将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中。

-q   不显示指令执行过程。

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

-S   包含系统和隐藏文件

-v   显示指令执行过程或显示版本信息。

-i<范本样式> 只压缩符合条件的文件。

-x<范本样式> 压缩时排除符合条件的文件。

-n  <字尾字符串> 不压缩具有特定字尾字符串的文件。

-<压缩效率> 压缩效率是一个介于1-9的 数值。

举例:

zip -r mydata.zip mydata          //将mydata目录压缩为mydata.zip
unzip mydata.zip -d mydatabak      //将mydata.zip解压到mydatabak目录,注意要-d
unzip mydata.zip             //将mydata.zip解压到当前mydata目录
unzip dsw\*.zip              //将dsw目录下的所有zip文件解压到dsw目录下
unzip -v wwwroot.zip           //查看wwwroot.zip里面的内容

RAR

要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux不是免费的,然后安装:

tar -xzpvf rarlinux-3.2..tar.gz
cd rar
make

这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。

rar x vpsyou.rar           //解压 vpsyou.rar 到当前目录
rar vpsyou.rar ./vpsyou.com/    //将 vpsyou.com 目录打包为 vpsyou.rar
rar c test.rar            //
rar d test.rar file1.txt      //从test.rar包中删除file1.txt
rar e test.rar            //不能保存当前目录结构,所有文件都在本目录
rar x test.rar            //解压出来会保存目录结构

a 添加文件到操作文档

c 对操作文档添加说明注释

d 从文档中删除文件

e 将文件解压到当前目录(所有的文件被解压到当前目录,不能保持压缩前的目录结构,如果想保持压缩前的目录结构,用x解压)

x 带路径解压文档中内容到当前目录

TAR

Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩。

如何打包:

# tar -cvf archive_name.tar directory_to_compress

如何解包:

# tar -xvf archive_name.tar /tmp/  //后面解压路径为null时,默认解压到当前路径

常用参数:

-c 建立新的归档文件
-r 向归档文件末尾追加文件
-x 从归档文件中解出文件
可以这样记忆,创建新的文件是c,追加在原有文件上用r,从文件中解压出用x

-t  查看内容
-O 将文件解开到标准输出
-v 处理过程中输出相关信息
-f 对普通文件操作                  //似乎一直都要用f,不然的话,可能会不显示

-j  调用bzip2来压缩归档文件
-z 调用gzip来压缩归档文件,与-x联用时调用gzip完成解压缩
-Z 调用compress来压缩归档文件,与-x联用时调用compress完成解压缩

-p :使用原文件的原来属性(属性不会依据使用者而变)
-P :可以使用绝对路径来压缩!
-N :比后面接的日期(yyyy/mm/dd)还要新的才会被打包进新建的文件中!
--exclude FILE:在压缩的过程中,不要将 FILE 打包!

举例:

tar cvf dsw.tar dsw                   //将dsw文件打包为tar文件
tar czvf dsw.tar.gz dsw                 //z结合c时,表示将文件打包为tar.gz格式
tar xzvf dsw.tar.gz                    //z结合x时,表示将文件从.tar.gz包中解压
tar zxvf dsw.tar.gz -C builds             //指定解压dsw到builds目录,注意需要-C
tar zcvfp back.tar.gz ./new             //打包new目录下所有文件,并保留其原有属性
tar -zcvf file.tar.gz ./new/ --exclude ./new/tmp  //打包new目录下除tmp之外的所有文件夹

TAR.GZ TAR.Z TAR.BZ2

tar.gz这种格式是我使用得最多的压缩格式。它在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。与gzip相对的解压程序是gunzip

compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多,Z结尾的文件就是bzip2压缩的结果.与 compress相对的解压程序是uncompress ,tar中使用-Z这个参数来调用compress。

bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果,这种压缩格式是我们提到的所有方式中压缩率最好的。当然,这也就意味着,它比前面的方式要占用更多的CPU与时间。与bzip2相对的解压程序是bunzip2,tar中使用-j这个参数来调用gzip

注意:请注意z和Z与tar中c(归档),x(解压)配合使用

z + c = 将文件打包并使用gzip压缩为tar.gz

z + x = 将压缩包使用gzip将包解压

Z + c = 将文件打包并使用compress压缩为tar.Z

Z + x = 将压缩包使用compress解压

j  + c = 将文件打包并使用bzip2压缩为tar.bz2

j  + x =  将压缩包使用gzip将包解压

解压缩:

tar -cZf all.tar.Z *.jpg      //将所有.jpg文件打成tar包,并且其用compress压缩
tar -xZf all.tar.Z         //将上面打的包解开
上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:
tar -zxvf archive_name.tar.gz -C /tmp/extract_here/ tar -cjf all.tar.bz2 *.jpg    //将所有.jpg文件打包成tar包,并且使用bzip2压缩
tar -xjf all.tar.bz2        //将上面打的包解压 

上面这个解包命令将会将文档解开在当前目录下面。当然,你也可以用这个命令来捏住解包的路径:

 tar -jxvf archive_name.tar.bz2 -C /tmp/extract_here/


上一篇:HBase实战 | 知乎实时数仓架构演进


下一篇:解决element-ui 中upload组件使用多个时无法绑定对应的元素