Linux——压缩文件
为什么需要压缩文件?
文件在传输过程中,可能由于文件过大,传输所需时间过多。减少文件大小有两个明显的好处,一是可以减
少存储空间,二是通过网络传输文件时,可以减少传输的时间。对于某些不常用文件,减少它对硬盘空间的
浪费,我们往往会将其压缩,在需要时再解压缩。
Linux中有哪些文件压缩命令?
在Linux中,提供了许多文件压缩命令,针对所需要压缩的文件不同,我们可以选用不同的压缩方式。
压缩格式:gz bz2 xz zip z
根据不同的压缩算法,压缩比也不同。
压缩命令详解:
gzip: FILE.gz
gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中
比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。
语法格式:gzip 选项 参数
常用选项:
-a或——ascii:使用ASCII文字模式;
-d或--decompress或----uncompress:解开压缩文件;
-f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;
-l或——list:列出压缩文件的相关信息;
-n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记;
-N或——name:压缩文件时,保存原来的文件名称及时间戳记;
-q或——quiet:不显示警告信息;
-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;
-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;
-t或——test:测试压缩文件是否正确无误;
-#<压缩比>:压缩比是一个介于1~9的数值,默认值为 6 ,指定的数值越大,压缩效率就会愈高;
--best:此参数的效果和指定“-9”参数相同;
--fast:此参数的效果和指定“-1”参数相同。
[wangml@iZwz976helaylvgqok97prZ scourse]$ ls
passwd
[wangml@iZwz976helaylvgqok97prZ scourse]$ gzip *
[wangml@iZwz976helaylvgqok97prZ scourse]$ ls
passwd.gz
[wangml@iZwz976helaylvgqok97prZ scourse]$ gzip -d *
[wangml@iZwz976helaylvgqok97prZ scourse]$ ls
passwd
默认情况下,源文件在被压缩完后会被删除
zcat: 在不解压的情况下,查看被gzip压缩的文本文件的内容。
bzip2: FILE.bz2
bzip2比gzip有更大的压缩比,使用格式近似。
语法格式:bzip2 选项 参数
常用选项:
-c或——stdout:将压缩与解压缩的结果送到标准输出;
-d或——decompress:执行解压缩;
-f或-force:bzip2在压缩或解压缩时,若输出文件与现有文件同名,预设不会覆盖现有文件。若要覆盖。请使用此参数;
-k或——keep:bzip2在压缩或解压缩后,会删除原始文件。若要保留原始文件,请使用此参数;
-s或——small:降低程序执行时内存的使用量;
-v或——verbose:压缩或解压缩文件时,显示详细的信息;
-z或——compress:强制执行压缩;
-#<压缩比>:压缩比是一个介于1~9的数值,默认值为 6 ,指定的数值越大,压缩效率就会愈高;
bunzip2 文件: 解压缩 .bz2 文件
bzcat:在不解压的情况下,查看被bzip2文本文件的内容。
xz:FILE.xz
压缩比更大
语法格式:xz 选项 参数
常用选项:
-d:解压缩
-#<压缩比>:压缩比是一个介于1~9的数值,默认值为 6 ,指定的数值越大,压缩效率就会愈高;
-k:压缩时保留源文件,也可以使用输出重定向保留源文件
unxz:解压缩
xzcat:在不解压的情况下,查看被xz文本文件的内容,同xzdec
zip:可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外
产生具有“.zip”扩展名的压缩文件。
语法格式:zip 压缩后的文件名 要压缩的文件
常用选项:
-A:调整可执行的自动解压缩文件;
-b<工作目录>:指定暂时存放文件的目录;
-c:替每个被压缩的文件加上注释;
-d:从压缩文件内删除指定的文件;
-D:压缩文件内不建立目录名称;
-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩
文件内,使用本参数会一并将其加入压缩文件中;
-F:尝试修复已损坏的压缩文件;
-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;
-i<范本样式>:只压缩符合条件的文件;
-j:只保存文件名称及其内容,而不存放任何目录名称;
-J:删除压缩文件前面不必要的数据;
-k:使用MS-DOS兼容格式的文件名称;
-l:压缩文件时,把LF字符置换成LF+CR字符;
-ll:压缩文件时,把LF+cp字符置换成LF字符;
-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;
-n<字尾字符串>:不压缩具有特定字尾字符串的文件;
-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;
-q:不显示指令执行过程;
-r:递归处理,将指定目录下的所有文件和子目录一并处理;
-S:包含系统和隐藏文件;
-t<日期时间>:把压缩文件的日期设成指定的日期;
-T:检查备份文件内的每个文件是否正确无误;
-u:更换较新的文件到压缩文件内;
-v:显示指令执行过程或显示版本信息;
-V:保存VMS操作系统的文件属性;
-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;
-x<范本样式>:压缩时排除符合条件的文件;
-X:不保存额外的文件属性;
-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;
-z:替压缩文件加上注释;
-$:保存第一个被压缩文件所在磁盘的卷册名称;
-<压缩比>:压缩比是一个介于1~9的数值。
unzip:解压缩
打包和压缩的区别?
打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
为什么要区分这两个概念呢?
这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆
文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip、bzip2命令)。
归档工具:
tar:默认不储存扩展属性
利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的
文件。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合
成为一个文件以便于网络传输是非常有用的。
语法格式:tar 选项 参数
常用选项:
-c: 创建归档文件
-x:展开归档文件
-f:操作归档文件
--xattrs: 归档时,保留文件扩展属性信息
-t:不展开归档,只查看归档了哪些文件
-zcf:归档并调用gzip压缩
-zxf:调用gzip压缩再归档
-jcf:归档并调用bzip2压缩
-jxf:调用bzip2压缩再归档
-Jcf:归档并调用xz压缩
-Jxf:调用xz压缩再归档
cpio: 归档工具