Loading... <h3><span style="font-size: 16px">一、压缩</span></h3> <p><span style="font-size: 14px"> 压缩:根据一定算法将数据以更加节省空间的形式存放。下面来看一下Linux常见的压缩工具:</span></p> <p><span style="font-size: 14px"> <strong> 1、gzip/gunzip</strong></span></p> <p><span style="font-size: 14px"> 后缀名:.gz</span></p> <p><span style="font-size: 14px"> 常用选项:</span></p> <p><span style="font-size: 14px"> -#:压缩比:默认为6,范围0-9。</span></p> <p><span style="font-size: 14px"> -d:解压缩,相当于gunzip。</span></p> <p><span style="font-size: 14px"> -c:将压缩后的结果输出标准输出。</span></p> <p><span style="font-size: 14px"> gzip -c /path/to/somefile > /path/to/somefile.gz</span></p> <p><span style="font-size: 14px"> <span style="font-size: 14px">-v:显示进度。</span></span></p> <p><span style="font-size: 14px"> zcat someifle.gz:不解压查看gzip压缩后的内容。</span></p> <p><span style="font-size: 14px"> 演示:<br /></span></p> <p><span style="font-size: 14px"> 先复制一个文件到/tmp目录下:<br /></span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160231-87.png" title="1430621127382870.png" alt="1.png" /></span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160231-30.png" title="1430621225212321.png" alt="2.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703160231-11.png" title="1430621330905710.png" alt="3.png" /></span></p> <p><span style="font-size: 14px"> 从上面的结果中可以明显的看出压缩前后的文件大小的区别,而且在压缩完后源文件就不见了,如果我们想保留原文件可以进行以下操作:<br /></span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160231-97.png" title="1430621589125833.png" alt="4.png" /></span></p> <p><span style="font-size: 14px"> 上面的范例中首先使用-d选项进行了解压缩,也可以使用gunzip命令来实现解压缩;压缩时修改了默认的压缩比,并且保留了源文件。<br /></span></p> <p><span style="font-size: 14px"> 如果想要读取压缩后的文件内容,我们可以先将其解压后查看,当然也可以直接使用命令进行查看:<br /></span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160231-13.png" title="1430621911101523.png" alt="5.png" /></span></p> <p><span style="font-size: 14px"> <strong> 2、bzip2/bunzip2</strong></span></p> <p><span style="font-size: 14px"> 后缀名: .bz2</span></p> <p><span style="font-size: 14px"> 常用选项:<br /></span></p> <p><span style="font-size: 14px"> -#:压缩比:默认为6,范围1-9。</span></p> <p><span style="font-size: 14px"> -d:解压缩,相当于bunzip2。</span></p> <p><span style="font-size: 14px"> -k:保留原文件。</span></p> <p><span style="font-size: 14px"> -c:<span style="font-size: 14px">将压缩后的结果输出标准输出。</span></span></p> <p><span style="font-size: 14px"> bzcat somefile.bz2:不解压缩查看。</span></p> <p><span style="font-size: 14px"> 演示:<br /></span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160231-40.png" title="1430622158109338.png" alt="1.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703160231-29.png" title="1430622227205613.png" alt="2.png" /> 同样,bzip2在压缩后也把源文件搞没了;</span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160231-44-1.png" title="1430622536937177.png" alt="3.png" /></span></p> <p><span style="font-size: 14px"> 也可以使用与gzip相同的方法来保留源文件;</span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160231-58.png" title="1430622644344116.png" alt="4.png" /></span></p> <p><span style="font-size: 14px"> 查看压缩文件的内容:</span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160231-18.png" title="1430622718426088.png" alt="4.png" /><br /></span></p> <p><span style="font-size: 14px"> <strong> 3、xz/unxz</strong></span></p> <p><span style="font-size: 14px"> 后缀名: .xz</span></p> <p><span style="font-size: 14px"> 常用选项:<br /></span></p> <p><span style="font-size: 14px"> -#:压缩比默认为6, 范围0-9。</span></p> <p><span style="font-size: 14px"> -d:解压缩,相当于unxz。</span></p> <p><span style="font-size: 14px"> -k:保留原文件。</span></p> <p><span style="font-size: 14px"> -c:<span style="font-size: 14px">将压缩后的结果输出标准输出。</span></span></p> <p><span style="font-size: 14px"> -v:显示进度。</span></p> <p style="text-indent: 28px"><span style="font-size: 14px"> xzcat somefile.xz:不解压缩查看。</span></p> <p style="text-indent: 28px"><span style="font-size: 14px"> 演示:</span><img src="//cto.wang/usr/uploads/2016/07/20160703160232-63.png" title="1430633143728022.png" alt="1.png" style="font-size: 14px" /><img src="//cto.wang/usr/uploads/2016/07/20160703160232-21.png" title="1430633235780279.png" alt="2.png" /></p> <p style="text-indent: 28px"> xz命令与gzip、bzip2命令用法类似,就不做过多的演示了。</p> <p><span style="font-size: 14px"> 以上三种压缩工具都可以虽然都是可以对文件进行压缩,但它的压缩性能是有区别的:</span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160232-27.png" title="1430633740952871.png" alt="1.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703160232-18.png" title="1430633744720482.png" alt="2.png" /></p> <p><span style="font-size: 14px"> 分别使用三种工具对同一文件进行同一级别的压缩,结果显示xz的压缩比最高。<br /></span></p> <p><span style="font-size: 14px"> 上面介绍的工具只能对单个文件进行压缩,而对于目录是不能操作的,如下图所示:</span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160232-44.png" title="1430633955128896.png" alt="3.png" /></span></p> <p><span style="font-size: 14px"> 如果想对目录进行压缩可以使用下面的这个命令。<br /></span></p> <p><span style="font-size: 14px"> <strong> 4、zip/unzip</strong></span></p> <p><span style="font-size: 14px"> 后缀名:.zip<br /></span></p> <p><span style="font-size: 14px"> 命令格式:zip 文件名.zip 原文件</span></p> <p><span style="font-size: 14px"> 支持归档压缩,可将多个文件压缩至一个zip文件中;</span></p> <p><span style="font-size: 14px"> 支持对目录进行归档,如zip tmp.zip /tmp/*。</span></p> <p><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160232-20.png" title="1430634735993645.png" alt="1.png" /></span></p> <p><span style="font-size: 14px"> 针对于目录的压缩通常使用归档工具,所以zip就不过多的介绍了。<br /></span></p> <h3><span style="font-size: 16px">二、归档</span></h3> <p><span style="font-size: 14px"> 归档就是实现将多个文件打包成单个文件。</span></p> <p><span style="font-size: 14px"> 使用tar命令来实现归档功能。<br /></span></p> <p><span style="font-size: 14px"> 命令格式:tar [option] -f tarfile.tar src_file</span></p> <p><span style="font-size: 14px"> option: </span></p> <p><span style="font-size: 14px"> -c:创建归档。</span></p> <p><span style="font-size: 14px"> -f FILE.tar:指定归档后的文件。</span></p> <p><span style="font-size: 14px"> -v:显示执行过程。</span></p> <p> <span style="font-size: 14px"> -x:展开归档。</span></p> <p><span style="font-size: 14px"> -t:查看归档文件中的内容。</span></p> <p><span style="font-size: 14px"> -z:使用gzip格式压缩和解压缩归档文件。</span></p> <p><span style="font-size: 14px"> -j:<span style="font-size: 14px">使用bzip2格式压缩和解压缩归档文件。</span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"> -J:<span style="font-size: 14px">使用xz格式压缩和解压缩归档文件。</span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> -C:指定归档的存放路径。<br /></span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> -p:保留备份数据的原本权限与属性。<br /></span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> -P:将文件以绝对路径打包。</span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> 演示:<br /></span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> <strong>1、将/etc/目录打包存放到/tmp目录</strong><br /></span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160232-17.png" title="1430718751357913.png" alt="1.png" /></span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> 在执行命令时出现两个提示信息,从文件名和硬链接中移除了根目录;其实tar命令打包时是按照相对路径进行打包的,其用意在于将tar包展开时可以在任意目录进行,如果打包时是按照绝对路径的目录存放,那么展开时就会直接按照绝对路径进行恢复,以上图为例,如果/etc目录按照绝对路径打包,那么展开时就会直接恢复到/etc目录,会造成使用旧文件覆盖新文件的问题。<br /></span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> 如果想要以绝对路径对文件打包,可以使用-P选项,下面来看一下这两种方式的不同之处:<br /></span></span></span></p> <p><img src="//cto.wang/usr/uploads/2016/07/20160703160232-43.png" title="1430719438674280.png" alt="1.png" /><img src="//cto.wang/usr/uploads/2016/07/20160703160232-95.png" title="1430719450103522.png" alt="3.png" /></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> 上面分别以相对路径和绝对路径的方式对/etc目录进行了归档操作,下面我们来看一下两个tar包中的内容:<br /></span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"><img src="//cto.wang/usr/uploads/2016/07/20160703160232-80.png" title="1430719652610370.png" alt="4.png" /><img src="/upload/hsj15g0wkrw.png" title="1430719662381781.png" alt="5.png" /></span></span></span></p> <p><span style="font-size: 14px"><span style="font-size: 14px"><span style="font-size: 14px"> <strong>2、对归档文件时行压缩</strong><br /></span></span></span></p> <p><span style="font-size: 14px"><img src="/upload/0pidl1fhohm.png" title="1430719914662709.png" alt="1.png" /></span><span style="font-size: 14px"> <strong>3、展开归档文件</strong></span></p> <p><span style="font-size: 14px"><img src="/upload/vsqwxr4rsby.png" title="1430720139115809.png" alt="1.png" /><img src="/upload/rvtwkvlglk4.png" title="1430720142127811.png" alt="2.png" /></span></p> <p><span style="font-size: 14px"> 注意:展开归档文件时,如果归档文件是压缩的,使用相对应的压缩命令选项展开归档文件;以上图为例,归档文件的压缩格式为xz,在展开时可以使用对应的-J选项进行解压展开,也可以直接使用-xf选项,tar命令自动检测包类型并解压。</span></p> <p><span style="font-size: 14px"><br /></span></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信