今天来讲解一下压缩和打包的相关命令,首先得先明确两个概念,即:压缩和打包
压缩:将文件或目录进行压强,使文件或目录大小变小
打包:表示将目录中的所有内容,捆绑在一起,方便传输,打包后的文件会变大,不一定回变小
1、压缩解压命令:gzip
原意:GNU(是一个组织) zip
命令所在路径:/bin/gzip
执行权限:所有用户
语法:gzip 选项 [文件]
功能:压缩文件
压缩后的文件格式:.gz,gzip和bzip2一样,都会自动产生一个后缀名
例子:gzip /prem/newfile1
结果:newfile1.gz 产生了一个newfile1.gz文件,发现源文件不见了
gzip使用起来非常的简单,但是区别于windows下的winRAR,我们在Linux的所有压缩包放到windows下,winRAR都可以将它解压缩(也就是说windows的WinRAR什么格式的文件都支持,但是Linux就不一定支持了,当然你要安装相应的软件也可以,但是最好不要给自己制造麻烦),但是如果反过来,我们在windows下压缩包放到Linux下,就必须去找一个winRAR的Linux版本了
gzip还有两个特点:
(1)、它只能压缩文件,不能压缩目录
(2)、不保留源文件 newfile1.gz newfile1不在了
那么怎样实现解压缩呢?有两种方法:
(1)、gunzip gunzip /prem/newfile1.gz 解压也是不能保留源文件的,会将被解压的.gz包自动删除
(2)、gzip -d(decompress表示解压) +压缩包名称
那上面的gzip是不能压缩目录的,那要怎样来压缩目录呢,从而就有了tar
2、压缩解压命令:tar (不产生后缀名)
例子:tar -zcf newdir.tar.gz(这是最终的文件名,虽然gzip不需要指定新的文件名,但是由于我们是连贯操作,所以此处需要加上,成为最终的文件名) newdir (-zcf省去了-v),注意:一般都是在当前目录下使用tar进行打包,解包的
功能:将一个目录打包成一个文件,源目录还是存在的
语法:tar 选项[cvf] [目录]
-c 产生.tar打包文件 我们在使用tar打包目录的时候,-c是必要的选项,表示create创建一个打包文件
-v显示详细信息 可选项,是在命令执行的时候,显示命令执行的过程
-f指定压缩后的文件名 必选项,该选项必须放在所有选项的后面,后面跟住新的文件名
-z打包同时压缩 (不是所有的Linux都支持,打包并同时压缩的意思)
例子:tar -zcf newdir.tar.gz(这是最终的文件名,虽然gzip不需要指定新的文件名,但是由于我们是连贯操作,所以此处需要加上,成为最终的文件名) newdir (-zcf省去了-v),注意:一般都是在当前目录下使用tar进行打包,解包的
表示将newdir打包并压缩,新生成的文件名为newdir.tar.gz(我们严格要求新生成的名字用这种格式来写,即在原来的文件名后直接加上后缀,你也可以写成abc,但是你不好辨认它是不是一个压缩包,但是如果真的在系统中发现有这样的文件,他是不能使用cat,more等命令来查看内容的,此时我们可以使用file abc,他就会告诉我们这是一个gzip文件了)
结果:-rw-r--r--. 1 root root 114 5 21 21:07 newdir1.tar.gz生成的.tar.gz是一个二进制文件
压缩后文件格式:.tar.gz(打包后的后缀是.tar,然后再进行压缩就变成了.tar.gz格式了)
我们在互联网上down下来的源码,很多都是.tar.gz格式的,
注意:并不是所有的Linux和Unix系统都支持同时打包并压缩的,所以我们还是强调先打包成.tar包,再对这个.tar包进行压缩
(1)、tar -cf newdir.tar newdir (省去-z压缩,省去-v显示打包详情)
(2)、gzip newdir.tar 就会得到一个newdir.tar.gz文件了 ,此时就可以使用gzip来压缩一个包,此时包已经不是目录的类型了,注意gzip是不可以压缩目录的
那么如何解包呢?
也是使用tar,但是选项不同
-x 解包.tar文件
-v显示详细信息
-f指定解压文件
-z解压缩
例子:tar -zxf newdir.tar.gz 将newdir.tar.gz解包到当前目录下(打包是-zcf,c表示创建,x表示execute)
那如果要分两步:
(1)、gunzip newdir.tar.gz
(2)、tar -xf newdir.tar (少了一个-z解压缩)
3、压缩解压命令zip (注意:该命令不自动产生后缀名,会保留源文件,用得最多的压缩命令)
.zip格式,是windows和Linux同时都支持的格式,所以我们在windows和Linux下共享文件的时候,如果文件不是特别大,我们就可以使用.zip格式的了,因为在两个系统上都可以支持对他进行解压缩,可以压缩文件,也可以压缩目录
例子:zip newfile.zip newfile 和tar比较像,也是先写压缩后的文件名,再是源文件名
显示: newfile1 newfile1.gz,和gzip不同的是,它会保留原文件
例子:zip services.zip /etc/services
可以看到一个压缩比:
newfile2 services.zip,压缩后的文件会在当前目录中显示
同样,想压缩目录也是可以的,只要加上一个选项-r,不加-r时,压缩目录不会报错,但是压缩比永远都为0%,即压缩后大小和源目录一样。
zip -r newdir.zip newdir (此时如果压缩目录时,不使用-r选项,则会虽然没有报错,实际上没有压缩成功) 也是先写新的文件名,再写源文件名(参数,就是命令的操作对象),注意,一定要将后缀名写上,即使LINUX对文件名要求不是很高
那如何对.zip文件进行解压缩呢?可以使用unzip,很简单
unzip newdir.zip 或者 unzip newfile.zip
解压的时候,不管是对文件,还是对目录,都不需要加 -r
zip有两个优点:
(1)、保留了源文件
(2)、可以压缩目录
解决了gzip的两个缺点,同时他是和windows兼容最好的格式
(注意,使用gzip的时候,后缀gz会自动填充,gzip newfile就表示压缩newfile文件,使用tar的时候,后缀名最好为tar,使用zip的时候,后缀名最好为zip)
4、压缩解压命令:bzip2 不能压缩目录,但由于有-k选项,所以可以保留源文件
实际上,bzip2是gzip的升级版,像之前说的,gzip又不能压缩目录,又不能保留源文件,是不是要淘汰了呢,实际上还是有广泛的应用。别看它只是一个命令,但他的压缩比非常的惊人。Linux的压缩比非常的惊人,比windows要大得多,尤其是这个bzip2,特别适合压缩大型的文件。(zip适合压缩小文件)
bzip2和gzip非常相似,只是加了一个选项,-k(表示keep,保留),可以保留源文件,不加-k,是跟gzip完全一样的
语法:bzip2 选项[-k] [文件]
压缩后的格式:.bz2 gzip和bzip2一样,都会自动产生一个后缀名
例子:bzip2 -k newfile2
显示: newfile2.bz2 newfile2 保留了源文件
那如何对.bz2文件进行解压缩呢
使用:bunzip2 选项 [-k] 解压缩后保留源文件(保留原来的压缩包) ,对gzip压缩的文件进行解压,使用gunzip newfile.gz
bunzip2 newfile2.bz2
还可以像gzip 那样,加上-d选项(decompress解压),
bzip2 -d newfile.bz2 对.bz2文件进行解压
也可以加上-k(keep)保留源文件 bzip2 -dk newfile.bz2 此时将保留源文件,并且解压缩文件newfile.bz2