Linux压缩及归档详解
我们Linux操作系统中的压缩文件的格式主要有gz、bz2、xz以及Z四种,压缩的过程是我
们的操作系统利用压缩算法来进行实现的,压缩算法不同,压缩比就会不同,压缩文件的过程
是先利用压缩算法去扫描文件,然后利用压缩算法去完成压缩,压缩比指的是压缩前的文件大
小减去压缩后的文件大小的文件大小的差值比上压缩前的文件大小,故压缩比越大,说明压缩
性能就越好,我们早期的Unix操作系统上有一种压缩工具叫做compress,compress本身的意思
就是压缩的意思,compress命令压缩后的文件的文件名的后缀为.Z,而与之对应的解压缩命令
就是uncompress,这个命令的压缩比很小,是一个很古老的压缩工具。
目前我们的Linux系统上流行的压缩工具主要有以下几种,按出现时间的早晚来进行排序:
1,gz格式的压缩工具
压缩工具为gzip,压缩后的文件名的后缀为.gz
使用格式:gzip filename1 filename2 ...,其后可以指定多个文件,
gzip会把每一个文件单独压缩,该工具在压缩之后会删除原文件
该命令所对应的解压缩命令为gunzip
使用格式:gunzip filename1 filename2 ...
解压缩之后也会删除原文件(即压缩后的文件)
但是我们的gzip命令有一个-d选项就是用来解压缩的,
使用格式:gzip -d filename1 filename2 ...
还可以使用- #(1-9)选项来指定压缩比,默认的压缩比为6,
因为压缩比是和压缩速度成反比的
我们还可以使用zcat命令在不解压的情况下去查看gz格式的压缩文件的内容,
使用格式:zcat filename.gz
该工具只能用来压缩文件而不能用来压缩目录
2,bz2格式的压缩工具
压缩工具为bzip2(2为bzip工具的版本号),压缩后的文件名的后缀为.bz2,该工具
比gzip工具有着更大的压缩比,对小文件来讲优势不是很明显,对大文件来讲优势明显,但是
和gzip工具的使用格式是一样的:
使用格式:bzip2 filename1 filename2 ...,同样该工具也只能用来压缩文件,而
不可以压缩目录,压缩后也会删除原文件:
解压缩的工具为bunzip2,使用格式为bunzip2 filename1 filename2 ...,解压缩后
也会删除原文件(即即压缩文件):
同样该工具也支持-d选项进行解压缩,且支持- #选项来指定压缩比:
常用-k(--keep)选项:压缩及解压缩的时候可以保留原文件,而不将原文件删除:
我们可以使用bzcat命令,在不解压文件的情况下,来查看bz格式的压缩文件的内容:
3,xz格式的压缩工具
温故->sed命令具有查找并替换的功能,但是sed命令默认是不会修改原文件的内容
的,但是sed命令的-i选项可以修改原文件的内容:
压缩工具为xz,压缩后的文件名的后缀为.xz
使用格式:xz filename1 filename2 ...,压缩程度比bzip2更大,是三种压缩工具
中压缩比最大的工具,压缩后同样会删除原文件:
解压缩的工具为unxz,使用格式:unxz filename1 filename2 ...,解压缩后也会
删除原文件(即压缩文件):
xz命令也支持-d选项进行解压缩:
也支持-#选项指定压缩比,默认压缩比为6:
也支持-k(--keep)选项,在压缩及解压缩的时候保留原文件:
xzcat命令可以在不解压文件的情况下,查看xz格式压缩文件的内容:
xz命令也是只能压缩文件,而不可以压缩目录:
xzdec(xzdecompress)是一种也可以解压缩xz格式的压缩文件中的内容的压缩工具:
xzdec命令是一种将压缩文件中的内容解压输出的一种解压工具,而不是解压缩压缩
文件的工具
由以上可知我们的压缩工具只能压缩文件而不能压缩目录,如果指向目录的话我们的压缩
命令会把目录下的文件一个一个的单独压缩,这些压缩工具在压缩的过程中,默认会删除原文
件,而只保留压缩后的文件,我们在上面介绍了三种目前流行的压缩工具,接下来我们再介绍
一种既可以归档又可以压缩的工具,归档的意思我们可以直接理解为将所有要压缩的文件进行
打包,将多个文件压缩到一起的动作叫做归档(archive),归档本身并不意味着压缩,但是我
们下来要介绍的这种工具本身就是一种既归档又压缩的工具:
·zip命令
zip命令可以压缩目录,而且压缩后不删除原文件:
使用格式:zip 压缩后的文件名(由用户自己指定).zip filename1 filename2 ...
上图中的deflated、stored分别指的是压缩文件时的压缩算法
解归档压缩的命令:
·unzip命令
使用格式:unzip 压缩文件名.zip
解压缩时也不会删除原文件下面来介绍一种我们在今后非常常用的一种命令,tar命令:
tar命令是一种只归档不压缩的工具
使用格式:tar [options] filename.tar filename1 filename2 ...
-c选项:创建归档文件
-x选项:展开归档
-t选项:不展开归档的情况下,查看归档了哪些文件
--xattrs:表示在归档的同时保留文件的扩展属性信息,因为我们默认在进行文件归
档的时候不会保留文件的扩展属性信息
-f选项:-f filename.tar->归档后的文件名是由用户自定义的,这个文件名必须紧
跟在-f选项后面
创建归档文件:归档的时候会保留原文件
在不展开归档文件的情况下查看归档了那些文件:
展开归档:展开归档的时候也会保留原文件:
tar命令允许我们将归档和压缩的功能集成起来,用一条命令就可以完成归档及压缩:
-z选项表示让我们的tar命令来调用gzip工具来完成压缩,
使用格式:
tar -zcf filename.tar.gz(文件名后缀多了一个可以标识我们使用的是哪种压缩工
具的后缀) filename1 filename2 ...
归档及压缩也不会删除原文件:
解压缩再展开归档:也不会删除原文件
tar -zxf filename.tar.gz
-z选项可以省略因为我们的tar命令,可以根据压缩归档文件的后缀名来判断我们使用
了哪种压缩工具,从而就使用哪种工具来解压缩:
不展开归档直接查看归档压缩包的内容:
tar -ztf filename.tar.gz,同理-z选项也可以省略
-j选项表示让我们的tar命令去调用我们的bzip2工具来完成压缩:
使用格式:
归档及压缩文件:不删除原文件
tar -jcf filename.tar.bz2 filename1 filename2 ...
解归档解压缩文件:不删除原文件
tar -jxf filename.tar.bz2->同理-j选项可以省略
查看压缩包中的内容
tar -jtf filename.tar.bz2->同理-j选项可以省略
-J选项可以使得我们的tar命令来调用我们的xz压缩工具来完成文件的压缩:
使用格式:
压缩及归档文件:不删除原文件
tar -Jcf filename.tar.xz filename1 filename2 ...
解归档解压缩文件:不删除原文件
tar -Jxf filename.tar.xz->同理-J选项可以省略
查看归档压缩包的内容:
tar -Jtf filename.tar.xz->同理-J选项可以省略
我们还有一种归档命令叫做cpio,cpio也是一种归档工具,比tar古老,但是有些场合适
用于使用cpio不适用于使用tar。
我们Linux系统内置了一个可以使得我们的shell脚本和用户进行交互的命令,这个命令
叫做read命令:
read命令后面可以接多个参数,参数之间用空格隔开,参数和用户输入的参数一一对应
-p选项->-p "给出用户的提示"
-t选项->指定等待用户输入数据的时间
·练习:写一个脚本,要求
脚本可以和用户进行交互,使得用户输入两个整数,求这两个整数的和,不过脚本有等
待时间,超出等待时间5S脚本自动退出
脚本内容:
脚本执行结果:
温故:echo -n 表示不换行输出
·练习:写一个脚本,要求
脚本可以使用户从键盘输入3个文件,我们的脚本可以使得这几个文件被归档压缩成一
个文件
脚本内容:
脚本执行结果: