在Linux上有很多用于压缩文件的命令。其中最新最有效的是xz,但它们都有节省磁盘空间和保存文件供以后使用的优点。在这篇文章中,我们比较了压缩命令并指出了显著的差异。
焦油
tar命令不是专门的压缩命令。它通常用于将多个文件拖放到单个文件中,以便轻松地传输到另一个系统或将文件作为相关组进行备份。它还提供了压缩作为一种特性,这很有意义,并添加了z压缩选项可用来实现这一点。
当压缩被添加到焦油命令z选项,沥青使用gzip进行压缩。
您可以使用焦油像压缩一组文件一样容易地压缩单个文件,尽管这与使用没有什么特别的优势gzip直接。使用焦油对于这一点,你只需要像识别一组带有“tar cfz newtarfile filename”命令的文件一样识别该文件:
$ tar cfz bigfile。tgzbigfile ^ ^ | | +- new file +- file to be compressed
$ ls -l bigfile* -rw-rw-r- 1 shs shs 103270400 Apr 16 16:09 bigfile -rw-rw-r- 1 shs shs 21608325 Apr 16 16:08 bigfile.tgz
注意文件大小的显著减少。
如果你喜欢,你可以用tar.gz扩展名,这可能会使文件的字符更明显一些,但是大多数Linux用户可能会认识它tgz因为意思是一样的东西——组合焦油和广州以指示该文件是压缩的tar文件。压缩完成后,您将同时保留原始文件和压缩文件。
要将多个文件收集在一起并将生成的“tar ball”压缩到一个命令中,可以使用相同的基本语法,但要指定要包含的文件作为一个组来代替单个文件。这里有一个例子:
$ tar cfz bin。tgz bin / *
^ ^
| +——要包含的文件
+新文件
邮政编码
的邮政编码命令创建一个压缩文件,同时保持原始文件不变。语法很简单,但与with一样焦油,您必须记住,您的原始文件应该是命令行上的最后一个参数。
$ ls -l bigfile.zip -rw-rw-r- 1 shs shs 103270400 Apr 16 11:18 bigfile -rw-rw-r- 1 shs shs 21606889 Apr 16 11:19 bigfile.zip
gzip
的gzip命令的使用非常简单。只需键入“gzip”,后跟要压缩的文件的名称。与上面描述的命令不同,gzip将加密文件“在适当的位置”。换句话说,原始文件将被加密的文件替换。
$ ls -l bigfile* -rw-rw-r- 1 shs shs 21606751 Apr 15 17:57 bigfile.gz
bzip2
与gzip命令,bzip2将压缩文件,您选择“在适当的位置”,只留下原来的文件。
$ ls -l bigfile* -rw-rw-r- 1 shs shs 18115234 Apr 15 17:57 bigfile.bz2
xz
作为压缩命令团队的新人,xz在压缩文件方面,它是领跑者。与前面的两个命令一样,您只需要向命令提供文件名。同样,原始文件被压缩在适当的位置。
大文件* -rw-rw-r- 1 shs shs 13427236 4月15日17:30 bigfile.xz
对于大文件,您可能会注意到这一点xz与其他压缩命令相比,运行需要更长的时间,但是压缩的结果非常令人印象深刻。
考虑的比较
大多数人都听说过“大小不代表一切”。那么,让我们来比较一下文件大小,以及在制定压缩文件的计划时需要考虑的一些其他问题。
下面显示的统计信息都与压缩上面示例命令中使用的单个文件有关——bigfile。该文件是一个大型且相当随机的文本文件。压缩率在某种程度上取决于文件的内容。
大小减少
通过比较,上面显示的各种压缩命令产生了以下结果。百分比表示压缩文件与原始文件的比较。
-rw-rw-r - 1啦啦103270400 4月16日14:01 bigfile - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -rw-rw-r - 1啦啦18115234 4月16日13:59 bigfile。bz2 ~17% - rwo - rwo -r- 1 shs shs 21606751 4月16日14:00 bigfile.gz ~21% - rwo - rwo -r- 1 shs shs 21608322 4月16日13:59 bigfile。tgz ~21% - rww - rwr -r- 1 shs shs 13427236 4月16日14:00大文件。xz~13% -rw-rw-r-- 1 shs shs 21606889 Apr 16 13:59 bigfile.zip ~21%
的xz命令胜出,最终只占原始文件大小的13%,但是所有这些压缩命令都大大减少了原始文件的大小。
原始文件是否被替换
的bzip2,gzip和xz命令将所有原始文件替换为压缩版本。的焦油和邮政编码命令。
运行时
的xz命令似乎比其他命令花费更多的时间来加密文件。对于bigfile,大致的时间是:
命令运行时tar 4.9秒zip 5.2秒bzip2 22.8秒gzip 4.8秒xz 50.4秒
解压时间可能比压缩时间要短得多。
文件权限
无论您在原始文件上设置了什么权限,压缩文件的权限都将基于您的umask设置,除了bzip2保留原始文件的权限。
兼容Windows
的邮政编码命令创建一个可以使用的文件(即,decompressed) on Windows systems as well as Linux and other Unix systems without having to install other tools which may or may not be available.
解压文件
解压文件的命令类似于用于压缩文件的命令。在运行上面所示的压缩命令之后,这些命令将用于解压缩bigfile。
- 沥青:tar xf bigfile.tgz
- 邮政编码:解压缩bigfile.zip
- gzip:gunzip bigfile.gz
- bzip2:bunzip2 bigfile.gz2
- 翔泽:xz - d bigfile.xz或unxz bigfile.xz
运行您自己的压缩比较
如果您想自己运行一些测试,可以获取一个大型但可替换的文件,然后使用上面所示的每个命令对其进行压缩——最好使用一个新的子目录。您可能必须先安装xz如果您想在测试中包含它。这个脚本可以使比较更容易,但是可能需要几分钟来完成。
# !你需要这个,因为一些命令会取代原来的文件cp $filename $filename-2 # clean first(如果之前的结果仍然可用)rm $filename。* tar cvfz ./$filename。tgz$filename > /dev/null zip $filename.zip $filename > /dev/null bzip2 $filename # recover original file cp $filename-2 $filename gzip $filename # recover original file cp $filename-2 $filename xz $filename # show results ls -l $filename.* # replace the original file mv $filename-2 $filename