zip、rar打包并压缩

1. zip压缩工具

zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。

语法

zip(选项)(参数)

选项

-A:调整可执行的自动解压缩文件;
-b<工作目录>:指定暂时存放文件的目录;
-c:替每个被压缩的文件加上注释;
-d:从压缩文件内删除指定的文件;
-D:压缩文件内不建立目录名称;
-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;
-F:尝试修复已损坏的压缩文件;
-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-h:在线帮助;
-i<范本样式>:只压缩符合条件的文件;
-j:只保存文件名称及其内容,而不存放任何目录名称;
-J:删除压缩文件前面不必要的数据;
-k:使用MS-DOS兼容格式的文件名称;
-l:压缩文件时,把LF字符置换成LF+CR字符;
-ll:压缩文件时,把LF+cp字符置换成LF字符;
-L:显示版权信息;
-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
-n<字尾字符串>:不压缩具有特定字尾字符串的文件;
-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;
-q:不显示指令执行过程;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-S:包含系统和隐藏文件;
-t<日期时间>:把压缩文件的日期设成指定的日期;
-T:检查备份文件内的每个文件是否正确无误;
-u:更换较新的文件到压缩文件内;
-v:显示指令执行过程或显示版本信息;
-V:保存VMS操作系统的文件属性;
-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;
-x<范本样式>:压缩时排除符合条件的文件;
-X:不保存额外的文件属性;
-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
-z:替压缩文件加上注释;
-$:保存第一个被压缩文件所在磁盘的卷册名称;
-<压缩效率>:压缩效率是一个介于1~9的数值。

参数

  • zip压缩包:指定要创建的zip压缩包;
  • 文件列表:指定要压缩的文件列表。

实例

/home/Blinux/html/这个目录下所有文件和文件夹打包为当前目录下的html.zip:

zip -q -r html.zip /home/Blinux/html

上面的命令操作是将绝对地址的文件及文件夹进行压缩,以下给出压缩相对路径目录,比如目前在Bliux这个目录下,执行以下操作可以达到以上同样的效果:

zip -q -r html.zip html

比如现在我的html目录下,我操作的zip压缩命令是:

zip -q -r html.zip *

打包:tar cvf a.tar a
gzip方式压缩:gzip -q a.tar              压缩后文件名:a.tar.gz                      解压:gunzip a.tar.gz
.Z方式压缩:compress a.tar              压缩后文件名:a.tar.Z                       解压:uncompress a.tar.Z

注意:可以压缩目录。
如上压缩包都可以在windows下使用winrar等压缩工具解开。但是windows下压缩的.zip和rar无法在unix或linux解开。
zip是windows的winrar等压缩软件的压缩。

命令的使用:

安装zip包,使用命令yum install -y zip

安装解压缩包,使用yum install -y unzip

扫描二维码关注公众号,回复: 83064 查看本文章

压缩当前的文件夹         zip -r ./a.zip ./*         -r表示递归
解压                     unzip a.zip
压缩当前所在的目录命令:            zip a.zip ./*

gzip与zip的不同点

gzip是一种文件压缩工具(或该压缩工具产生的压缩文件格式),它的设计目标是处理单个的文件。gzip在压缩文件中的数据时使用的就是zlib。为了保存与文件属性有关的信息,gzip需要在压缩文件(*.gz)中保存更多的头信息内容,而zlib不用考虑这一点。但gzip只适用于单个文件,所以我们在UNIX/Linux上经常看到的压缩包后缀都是*.tar.gz或*.tgz,也就是先用tar把多个文件打包成单个文件,再用gzip压缩的结果。

zip只是一种数据结构,跟rar同类型。zip是适用于压缩多个文件的格式(相应的工具有PkZip和WinZip等),因此,zip文件还要进一步包含文件目录结构的信息,比gzip的头信息更多。但需要注意,zip格式可采用多种压缩算法,我们常见的zip文件大多不是用zlib的算法压缩的,其压缩数据的格式与gzip大不一样。

zip是将文件打包zip格式的压缩文件
gzip是将文件打包tar.gz格式的压缩文件
unzip是从zip包中解压出某个文件
gunzip从tar.gz包中解压出某个文件

Linux中zip压缩和unzip解压缩命令详解

1、把/home目录下面的mydata目录压缩为mydata.zip
zip -r mydata.zip mydata              #压缩为mydata目录


2、把/home目录下面的mydata.zip解压到mydatabak目录里面
unzip mydata.zip -d mydatabak


3、把/home目录下面的abc文件夹和123.txt压缩成为abc123.zip
zip -r abc123.zip abc 123.txt


4、把/home目录下面的wwwroot.zip直接解压到/home目录里面
unzip wwwroot.zip


5、把/home目录下面的abc12.zip、abc23.zip、abc34.zip同时解压到/home目录里面
unzip abc\*.zip


6、查看把/home目录下面的wwwroot.zip里面的内容
unzip -v wwwroot.zip


7、验证/home目录下面的wwwroot.zip是否完整
unzip -t wwwroot.zip


8、把/home目录下面wwwroot.zip里面的所有文件解压到第一级目录
unzip -j wwwroot.zip


2. tar打包

(1).命令格式:
tar[必要参数][选择参数][文件] 
(2).命令功能:用来压缩和解压文件。tar本身不具有压缩功能。他是调用压缩功能实现的 。

3.命令参数:

必要参数有如下:
-A                                  新增压缩文件到已存在的压缩
-B                                   设置区块大小
-c                                    建立新的压缩文件
-d                                    记录文件的差别
-r                                    添加文件到已经压缩的文件
-u                                   添加改变了和现有的文件到已经存在的压缩文件
-x                                   从压缩的文件中提取文件
-t                                   显示压缩文件的内容
-z                                   支持gzip解压文件
-j                                   支持bzip2解压文件
-Z                                   支持compress解压文件
-v                                   显示操作过程
-l                                    文件系统边界设置
-k                                    保留原有文件不覆盖

-m                                   保留文件不被覆盖
-W                                    确认压缩文件的正确性
可选参数如下:
-b                                      设置区块数目
-C                                       切换到指定目录
-f                                        指定压缩文件
--help                                 显示帮助信息
--version                             显示版本信息

命令:

tar -cvf 123.tar 123                                    #创建一个包

tar -xvf 123.tar                                           #解包

tar -tf 123.tar                                           #查看包的内容

tar -cvf 123.tar  --exclude 1.txt --exclude 2 123            #打包123.tar时,排除1.txt和2  123

常见文件的解压/压缩命令及参数:
tar 
解包:tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)

.tar.gz 和 .tgz
解压:tar zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName


.bz2
解压1:bzip2 -d FileName.bz2
解压2:bunzip2 FileName.bz2
压缩: bzip2 -z FileName


.tar.bz2
解压:tar jxvf FileName.tar.bz2
压缩:tar jcvf FileName.tar.bz2 DirName


.bz
解压1:bzip2 -d FileName.bz
解压2:bunzip2 FileName.bz
压缩:未知


.tar.bz
解压:tar jxvf FileName.tar.bz
压缩:未知


.Z
解压:uncompress FileName.Z
压缩:compress FileName


.tar.Z
解压:tar Zxvf FileName.tar.Z
压缩:tar Zcvf FileName.tar.Z DirName


.zip
解压:unzip FileName.zip
压缩:zip FileName.zip DirName


.rar
解压:rar x FileName.rar
压缩:rar a FileName.rar DirName

tar [-j|-z] [cv] [-f 建立的档案名] filename...《==打包与压缩

tar [-j|-z] [tv] [-f 建立的档案名] 《==查看档案
tar [-j|-z] [xv] [-f 建立的档案名] [-C 目录]  《==解压缩
选项与参数:
-c:建立打包档案,可搭配-v来观察过程中被打包的档案名(filename)
-t:查看打包档案的内容含有那些档案
-x:解压缩的功能,可以搭配-C在特定的目录解开;-c、-t、-x不能同时出现在一串指令列中。
-j:透过bzip2的支持进行压缩/解压缩:此时档案名最好为*.tar.bz2
-z:透过gzip的支持进行压缩/解压缩:此时档案名最好为*.tar.gz
-v:在压缩/解压缩的过程中,将正在处理文件名显示出来
-f filename:-f后面要立刻接被处理的档案名!建议-f单独写一个选项
-C 目录:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项
tar包是linux下的压缩包,相当于windows的rar,
一般tar包都属于源码包编译安装,都是未经过编译的源码。需要自己动手编译
tar xzvf xxx.tar && ./configure && make && make install
意思就是
./configure 配置软件的安装
make 进行源代码编译
make install 进行安装
&&属于逻辑符 可以理解为 然后 ,也就是前面的命令执行成功,然后在执行下面的一个命令。
上一条不成功,不执行下面的语句。估计解压完以后,会生成一个目录。
可以tar xzvf xxx.tar && cd xxx && make && make install

使用实例:

如果已经存在用户localhost, 文件/root/filetext.tar(这种格式只是单纯的打包,当然权限是只有root才能读写)。
[root@localhost~]# tar -xf filetext.tar -C /home/redhat/
[root@localhost ~]# tar -zxf filetext.tar.gz -C /home/redhat/
(对使用gzip格式压缩的包进行解压缩)


[root@redhat ~]# tar -jxf filetext.tar.bz /home/redhat/
(对使用bzip2格式压缩的包进行解压缩)
如果想要使用普通用户进行解压缩,那就必须赋予权限,实际操作命令还是一样的。

如果单纯的打了个包,用 file filetext.tar 来查案下这个文件软件包的类型。

使用使用tar -cvf wzq.tar wzq/           #把wzq打包成wzq.tar,并查看内容。

命令:tar -cf wzq.tar wzq/                #会覆盖源文件

使用命令tar -xvf wzq.tar                       解压缩

查看文件列表,使用命令:tar -tf wzq.tar

命令:tar -cvf wzq.tar --exclude 1.txt --exculede 2.txt       #打包时过滤掉1.txt和2.txt

如果是.gz的
tar zxf filetext.tar.gz -C               /home/普通用户的名字/Desktop
如果是bz2
tar jxf filetext.tar.bz2 -C                   /home/普通用户的名字/Desktop
如果只是个tar包没有被压缩
tar xf filetext.tar.bz2 -C                    /home/普通用户的名字/Desktop

注意:tar包 又称源码包,里面有编译文件(也有源码),只要反编译可得到源码,


3、(tar)打包并压缩

支持gz的

tar -zcvf 123.tar.gz 123                #打包

tar -zxvf 123.tar.gz                      #解压缩

支持bz2的

tar -jcvf 123.tar.bz2 123            #打包

tar -jxvf 123.tar.bz2                   #解压缩

支持xz的

tar -Jcvf 123.tar.xz 123                #打包

tar -Jxvf 123.xz                          #解压缩

tar -tf 123.bz/ tar -tf 123.gz / tar -tf 123.xz      #查看(包的内容)文件列表

 总结一下
 1、*.tar 用 tar –xvf 解压 
 2、*.gz 用 gzip -d或者gunzip 解压 
 3、*.tar.gz和*.tgz 用 tar –xzf 解压 
 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 解压

注意:bzip2不支持压缩目录  在和tar打包压缩一块使用就支持压缩目录了,实际上是tar支持打包目录,先打包再压缩。

压缩过程,就是计算过程,压缩级别越高,那么算法就越复杂,cpu计算的频率就越快,自然而然它的使用率就越高。

作业题:

1. gzip, bzip2 能否直接压缩目录呢?

答案:不能直接压缩目录,需要使用-d参数

2. 请快速写出,使用gzip和bzip2压缩和解压一个文件的命令。

  1. gzip filename
  1. gzip -d filename.gz
  1. bzip2 filename
  1. bzip2 -d filename.bz2


3. tar 在打包的时候,如果想排除多个文件或者目录如何操作?

排除多个文件:

  1. [root@silence ~]#mkdir silence 
  2. [root@silence ~]#touch 1.txt 2.txt 3.txt 4.txt
  3. [root@silence ~]# tar -zcvf txt.tar.gz --exclude 1.txt --exclude 2.txt silence/
  4. silence/
  5. silence/4.txt
  6. silence/3.txt
  7. silence/txt.tar.gz

排除多个目录:

  1. [root@silence silence]# mkdir 1 2 3 4 5
  2. [root@silence silence]# ls
  3. 1  1.txt  2  2.txt  3  3.txt  4  4.txt  5  txt.tar.gz
  4. [root@silence silence]# rm -rf *fz
  5. [root@silence silence]# rm -rf *gz
  6. [root@silence silence]# ls
  7. 1  1.txt  2  2.txt  3  3.txt  4  4.txt  5
  8. [root@silence silence]# cd
  9. [root@silence ~]# tar -zcvf txt.tar.gz --exclude 1 --exclude 2 silence/
  10. silence/
  11. silence/3/
  12. silence/5/
  13. silence/4.txt
  14. silence/3.txt
  15. silence/2.txt
  16. silence/4/
  17. silence/txt.tar.gz
  18. silence/1.txt
  19.  

排除多文件多目录

  1. [root@silence ~]# tar -zcvf silence.tar.gz --exclude 1 --exclude 2 --exclude 1.txt --exclude 4.txt silence/
  2. silence/
  3. silence/3/
  4. silence/5/
  5. silence/3.txt
  6. silence/2.txt
  7. silence/4/
  8. silence/txt.tar.gz
  9. [root@silence ~]# ls
  10. anaconda-ks.cfg       install.log         root     silence.tar.gz  txt.tar.gz
  11. anaconda-screenshots  install.log.syslog  silence  test.txt


4. 请实验,如果不加 "-" 是否正确, 如 tar zcvf  1.tar.gz  1.txt 2.txt ?

答:也可以正常压缩

  1. [root@silence ~]# tar zcvf 1.tar.gz 1.txt 2.txt
  2. 1.txt
  3. 2.txt
  4. [root@silence ~]# ls
  5. [color=Red]1.tar.gz[/color]  3.txt  anaconda-ks.cfg       install.log.syslog  txt.tar.gz
  6. 1.txt     4.txt  anaconda-screenshots  root
  7. 2.txt     5.txt  install.log           test.txt


5. 如何使用tar打包和解包 .tar.gz, .tar.bz2 的压缩包?

打包.tar.gz: tar -zcvf txt.gz 3.txt 4.txt

  1. [root@silence ~]# tar -zcvf txt.tar.gz 3.txt 4.txt
  2. 3.txt
  3. 4.txt
  4. [root@silence ~]# ls
  5. 1.txt  4.txt            anaconda-screenshots  root        [color=Red] txt.tar.gz[/color]
  6. 2.txt  5.txt            install.log           test.txt
  7. 3.txt  anaconda-ks.cfg  install.log.syslog    txt.tar.bz2

解包.tar.gz: tar -xf txt.tar.gz

打包.tar.bz2: tar -jcvf txt.tar.bz2 3.txt 4.txt

  1. [root@silence ~]# tar -jcvf txt.tar.bz2 3.txt 4.txt
  2. 3.txt
  3. 4.txt
  4. ls
  5. 1.txt  4.txt            anaconda-screenshots  root         txt.tar.gz
  6. 2.txt  5.txt            install.log           test.txt
  7. 3.txt  anaconda-ks.cfg  install.log.syslog    [color=Red]txt.tar.bz2[/color]

解包.tar.bz2: tar -xf txt.tar.bz2



6. 找一个大点的文件,使用tar 分别把这个文件打成 .tar.gz和.tar.bz2 压缩包,比较一下哪个包会更小,从而得出结论,是gzip压缩效果好还是bzip2压缩效果好?

  1. [code][root@silence ~]#cp -r /etc/ 1/
  2. [root@silence ~]#tar -zcvf silence.tar.gz 1/
  3. [root@silence ~]#tar -jcvf silence.tar.bz2 1/
  4. [root@silence ~]# du -sh silence.tar.gz silence.tar.bz2
  5. 7.3M    silence.tar.gz
  6. 6.6M    silence.tar.bz2
  7.  

[/code]

因此得出: bzip2压缩效果好



7. 使用tar打包并压缩的时候,默认压缩级别为几? 想一想如何能够改变压缩级别呢?(提示,tar本身没有这个功能哦,可以尝试拆分打包和压缩)

答:默认没级别。

答:在压缩目录是,如果只写目录名,也会生成压缩文件,但是,压缩文件无内容
     如果加上 -r  ,则会把目录下所有的目录和文件一并压缩。

  1. [root@silence ~]# du -sh 1.zip 2.zip 3.zip 4.zip
  2. 4.0K    1.zip              //zip 1.zip /etc/
  3. 4.0K    2.zip              //zip 2.zip /etc
  4. 29M     3.zip             //zip -r 3.zip /etc/ 
  5. 29M     4.zip             //zip -r 3.zip /etc
  6. [root@silence ~]# zip -r 5.zip silence/
  7.   adding: silence/ (stored 0%)
  8.   adding: silence/3/ (stored 0%)
  9.   adding: silence/1/ (stored 0%)
  10.   adding: silence/5/ (stored 0%)
  11.   adding: silence/1.tar.gz (stored 0%)
  12.   adding: silence/4.txt (stored 0%)
  13.   adding: silence/3.txt (stored 0%)
  14.   adding: silence/2.txt (stored 0%)
  15.   adding: silence/2/ (stored 0%)
  16.   adding: silence/4/ (stored 0%)
  17.   adding: silence/txt.tar.gz (deflated 9%)
  18.   adding: silence/1.txt (stored 0%)


扩展学习:
1.  在windows下常见的压缩包有rar和zip,默认rar在linux下是不支持压缩和解压的,但是也有相关的工具可以安装在linux平台上。而zip的压缩包是可以同时存在于linux平台和windows平台上的哦。
使用zip压缩:
zip可以压缩目录也可以压缩文件,压缩目录时,需要指定目录下的文件哦,看例子吧:

  1.  
  2. zip  1.txt.zip  1.txt
  3. zip  dir1.zip  dir1/*
  4.  

说明: zip 后面先跟目标文件名,也就是压缩后的自定义压缩包名,然后是要压缩的文件或者目录。
思考题: 在压缩目录时,如果只写目录名,会发生什么?而目录下还有二级目录甚至更多级目录时,能否也一并压缩二级目录下的文件呢?

做完实验后,相信您已经得出结论,看看是否和阿铭的答案一致?答案是,当目录下还有二级目录甚至更多级目录时,zip并不会把二级目录下的文件压缩,而仅仅是把二级目录本身压缩,那有没有级联的选项呢?当然有,那就是:

  1. zip -r dir1.zip dir1/

这样也不需要用 dir1/* 了,所以记住,使用zip压缩目录时,必须要加上 -r 选项。

好了,说完压缩,也该说如何解压了吧,解压的命令并不是zip了,而是叫做 unzip ,解压1.txt.zip的命令为:

  1. unzip 1.txt.zip

2. bzcat命令的使用:
对于使用bzip2压缩的文本文档,可以使用bzcat命令直接查看文档内容。

  1.  
  2. cp /etc/passwd ./11.txt
  3. bzip2 11.txt
  4. bzcat 11.txt.bz2
  5.  

3. 计算机下的压缩原理   


利用tar 通过网络拷贝数据 http://www.lishiming.net/thread-152-1-2.html
Tar打包、压缩与解压缩到指定目录的方法 http://www.lishiming.net/thread-96-1-3.html
linux下不支持解压大于4G的zip压缩包 http://www.lishiming.net/thread-1813-1-1.html


实际应用:

http://study.lishiming.net/chapter11.html

猜你喜欢

转载自my.oschina.net/u/3803405/blog/1789990