蚊章汇 - bzip
type: channel
link: https://linuxcn.bwsl.wang/tag/bzip/
items: 如何在 Linux 使用文件压缩

如何在 Linux 使用文件压缩
type: item
date: 2018-01-09T08:16:33+08:00
description: Linux 系统为文件压缩提供了许多选择，关键是选择一个最适合你的。如果你对可用于 Linux 系统的文件压缩命令或选项有任何疑问，你也许应该看一下 apropos compress 这个命令的输出。如果你有机会这么做，你会惊异于有如此多的的命令来进行压缩文件和解压缩文件；此外还有许多命令来进行压缩文件的比较、检验，并且能够在压缩文件中的内容中进行搜索，甚至能够把压缩文件从一个格式变成另外一种格式（如，将 .z 格式变为 .gz 格式 ）。你可以看到只是适用于 bzip2 压缩的全部条目就有这么多。加上 zip、gzip 和 xz 在内，你会有非常多的选择。$ apropos compress | grep ^bz bzcat (1) - decompresses files to stdout bzcmp (1) - compare bzip2 compressed files bzdiff (1) - compare bzip2 compressed files bzegrep (1) - search possibly bzip2 compressed files for a regular expression bzexe (1) - compress executable files in place bzfgrep (1) - search possibly bzip2 compressed files for a regular expression bzgrep (1) - search possibly bzip2 compressed files for a regular expression bzip2 (1) - a block-sorting file compressor, v1.0.6 bzless (1) - file perusal filter for crt viewing of bzip2 compressed text bzmore (1) - file perusal filter for crt viewing of bzip2 compressed text 在我的 Ubuntu 系统上 ，apropos compress 命令的返回中列出了 60 条以上的命令。压缩算法压缩并没有普适的方案，某些压缩工具是有损压缩，例如一些压缩用于减少 mp3 文件大小，而能够使聆听者有接近原声的音乐感受。但是在 Linux 命令行上压缩或归档用户文件所使用的算法必须能够精确地重新恢复为原始数据。换句话说，它们必须是无损的。这是如何做到的？让我们假设在一行上有 300 个相同的字符可以被压缩成像 “300x” 这样的字符串，但是这种算法对大多数文件没有很大的用处，因为文件中不可能包含长的相同字符序列比完全随机的序列更多。 压缩算法要复杂得多，从 Unix 早期压缩首次被引入以来，它就越来越复杂了。在 Linux 系统上的压缩命令在 Linux 系统上最常用的文件压缩命令包括 zip、gzip、bzip2、xz。 所有这些压缩命令都以类似的方式工作，但是你需要权衡有多少文件要压缩（节省多少空间）、压缩花费的时间、压缩文件在其他你需要使用的系统上的兼容性。有时压缩一个文件并不会花费很多时间和精力。在下面的例子中，被压缩的文件实际上比原始文件要大。这并不是一个常见情况，但是有可能发生——尤其是在文件内容达到一定程度的随机性。$ time zip bigfile.zip bigfile adding: bigfile (default 0% ) real 0m0.055s user 0m0.000s sys 0m0.016s $ ls -l bigfile* -rw-r--r-- 1 root root 0 12月 20 22:36 bigfile -rw------- 1 root root 164 12月 20 22:41 bigfile.zip 注意该文件压缩后的版本（bigfile.zip）比原始文件（bigfile）要大。如果压缩增加了文件的大小或者减少很少的比例，也许唯一的好处就是便于在线备份。如果你在压缩文件后看到了下面的信息，你不会从压缩中得到什么受益。 ( defalted 1% ) 文件内容在文件压缩的过程中有很重要的作用。在上面文件大小增加的例子中是因为文件内容过于随机。压缩一个文件内容只包含 0 的文件，你会有一个相当震惊的压缩比。在如此极端的情况下，三个常用的压缩工具都有非常棒的效果。-rw-rw-r-- 1 shs shs 10485760 Dec 8 12:31 zeroes.txt -rw-rw-r-- 1 shs shs 49 Dec 8 17:28 zeroes.t…