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
压缩当前的文件夹 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压缩和解压一个文件的命令。
- gzip filename
- gzip -d filename.gz
- bzip2 filename
- bzip2 -d filename.bz2
3. tar 在打包的时候,如果想排除多个文件或者目录如何操作?
排除多个文件:
- [root@silence ~]#mkdir silence
- [root@silence ~]#touch 1.txt 2.txt 3.txt 4.txt
- [root@silence ~]# tar -zcvf txt.tar.gz --exclude 1.txt --exclude 2.txt silence/
- silence/
- silence/4.txt
- silence/3.txt
- silence/txt.tar.gz
排除多个目录:
- [root@silence silence]# mkdir 1 2 3 4 5
- [root@silence silence]# ls
- 1 1.txt 2 2.txt 3 3.txt 4 4.txt 5 txt.tar.gz
- [root@silence silence]# rm -rf *fz
- [root@silence silence]# rm -rf *gz
- [root@silence silence]# ls
- 1 1.txt 2 2.txt 3 3.txt 4 4.txt 5
- [root@silence silence]# cd
- [root@silence ~]# tar -zcvf txt.tar.gz --exclude 1 --exclude 2 silence/
- silence/
- silence/3/
- silence/5/
- silence/4.txt
- silence/3.txt
- silence/2.txt
- silence/4/
- silence/txt.tar.gz
- silence/1.txt
排除多文件多目录
- [root@silence ~]# tar -zcvf silence.tar.gz --exclude 1 --exclude 2 --exclude 1.txt --exclude 4.txt silence/
- silence/
- silence/3/
- silence/5/
- silence/3.txt
- silence/2.txt
- silence/4/
- silence/txt.tar.gz
- [root@silence ~]# ls
- anaconda-ks.cfg install.log root silence.tar.gz txt.tar.gz
- anaconda-screenshots install.log.syslog silence test.txt
4. 请实验,如果不加 "-" 是否正确, 如 tar zcvf 1.tar.gz 1.txt 2.txt ?
答:也可以正常压缩
- [root@silence ~]# tar zcvf 1.tar.gz 1.txt 2.txt
- 1.txt
- 2.txt
- [root@silence ~]# ls
- [color=Red]1.tar.gz[/color] 3.txt anaconda-ks.cfg install.log.syslog txt.tar.gz
- 1.txt 4.txt anaconda-screenshots root
- 2.txt 5.txt install.log test.txt
5. 如何使用tar打包和解包 .tar.gz, .tar.bz2 的压缩包?
打包.tar.gz: tar -zcvf txt.gz 3.txt 4.txt
- [root@silence ~]# tar -zcvf txt.tar.gz 3.txt 4.txt
- 3.txt
- 4.txt
- [root@silence ~]# ls
- 1.txt 4.txt anaconda-screenshots root [color=Red] txt.tar.gz[/color]
- 2.txt 5.txt install.log test.txt
- 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
- [root@silence ~]# tar -jcvf txt.tar.bz2 3.txt 4.txt
- 3.txt
- 4.txt
- ls
- 1.txt 4.txt anaconda-screenshots root txt.tar.gz
- 2.txt 5.txt install.log test.txt
- 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压缩效果好?
- [code][root@silence ~]#cp -r /etc/ 1/
- [root@silence ~]#tar -zcvf silence.tar.gz 1/
- [root@silence ~]#tar -jcvf silence.tar.bz2 1/
- [root@silence ~]# du -sh silence.tar.gz silence.tar.bz2
- 7.3M silence.tar.gz
- 6.6M silence.tar.bz2
[/code]
因此得出: bzip2压缩效果好
7. 使用tar打包并压缩的时候,默认压缩级别为几? 想一想如何能够改变压缩级别呢?(提示,tar本身没有这个功能哦,可以尝试拆分打包和压缩)
答:默认没级别。
答:在压缩目录是,如果只写目录名,也会生成压缩文件,但是,压缩文件无内容
如果加上 -r ,则会把目录下所有的目录和文件一并压缩。
- [root@silence ~]# du -sh 1.zip 2.zip 3.zip 4.zip
- 4.0K 1.zip //zip 1.zip /etc/
- 4.0K 2.zip //zip 2.zip /etc
- 29M 3.zip //zip -r 3.zip /etc/
- 29M 4.zip //zip -r 3.zip /etc
- [root@silence ~]# zip -r 5.zip silence/
- adding: silence/ (stored 0%)
- adding: silence/3/ (stored 0%)
- adding: silence/1/ (stored 0%)
- adding: silence/5/ (stored 0%)
- adding: silence/1.tar.gz (stored 0%)
- adding: silence/4.txt (stored 0%)
- adding: silence/3.txt (stored 0%)
- adding: silence/2.txt (stored 0%)
- adding: silence/2/ (stored 0%)
- adding: silence/4/ (stored 0%)
- adding: silence/txt.tar.gz (deflated 9%)
- adding: silence/1.txt (stored 0%)
扩展学习:
1. 在windows下常见的压缩包有rar和zip,默认rar在linux下是不支持压缩和解压的,但是也有相关的工具可以安装在linux平台上。而zip的压缩包是可以同时存在于linux平台和windows平台上的哦。
使用zip压缩:
zip可以压缩目录也可以压缩文件,压缩目录时,需要指定目录下的文件哦,看例子吧:
- zip 1.txt.zip 1.txt
- zip dir1.zip dir1/*
说明: zip 后面先跟目标文件名,也就是压缩后的自定义压缩包名,然后是要压缩的文件或者目录。
思考题: 在压缩目录时,如果只写目录名,会发生什么?而目录下还有二级目录甚至更多级目录时,能否也一并压缩二级目录下的文件呢?
做完实验后,相信您已经得出结论,看看是否和阿铭的答案一致?答案是,当目录下还有二级目录甚至更多级目录时,zip并不会把二级目录下的文件压缩,而仅仅是把二级目录本身压缩,那有没有级联的选项呢?当然有,那就是:
- zip -r dir1.zip dir1/
这样也不需要用 dir1/* 了,所以记住,使用zip压缩目录时,必须要加上 -r 选项。
好了,说完压缩,也该说如何解压了吧,解压的命令并不是zip了,而是叫做 unzip ,解压1.txt.zip的命令为:
- unzip 1.txt.zip
2. bzcat命令的使用:
对于使用bzip2压缩的文本文档,可以使用bzcat命令直接查看文档内容。
- cp /etc/passwd ./11.txt
- bzip2 11.txt
- bzcat 11.txt.bz2
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
实际应用: