标签 gzip 下的文章

在 Linux 系统上有很多可以用于压缩文件的工具,但它们的表现并不都是一样的,也不是所有的压缩效果都是一样的。在这篇文章中,我们比较其中的五个工具。

在 Linux 上有不少用于压缩文件的命令。最新最有效的一个方法是 xz,但是所有的方法都有节省磁盘空间和维护备份文件供以后使用的优点。在这篇文章中,我们将比较这些压缩命令并指出显著的不同。

tar

tar 命令不是专门的压缩命令。它通常用于将多个文件拉入一个单个的文件中,以便容易地传输到另一个系统,或者将文件作为一个相关的组进行备份。它也提供压缩的功能,这就很有意义了,附加一个 z 压缩选项能够实现压缩文件。

当使用 z 选项为 tar 命令附加压缩过程时,tar 使用 gzip 来进行压缩。

就像压缩一组文件一样,你可以使用 tar 来压缩单个文件,尽管这种操作与直接使用 gzip 相比没有特别的优势。要使用 tar 这样做,只需要使用 tar cfz newtarfile filename 命令来标识要压缩的文件,就像标识一组文件一样,像这样:

$ tar cfz bigfile.tgz bigfile
            ^            ^
            |            |
            +- 新的文件  +- 将被压缩的文件

$ 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 的意思是一样的 – targz 的组合来显示文件是一个压缩的 tar 文件。在压缩完成后,你将同时得到原始文件和压缩文件。

要将很多文件收集在一起并在一个命令中压缩出 “tar ball”,使用相同的语法,但要指定要包含的文件为一组,而不是单个文件。这里有一个示例:

$ tar cfz bin.tgz bin/*
          ^         ^
          |         +-- 将被包含的文件
          + 新的文件

zip

zip 命令创建一个压缩文件,与此同时保留原始文件的完整性。语法像使用 tar 一样简单,只是你必需记住,你的原始文件名称应该是命令行上的最后一个参数。

$ zip ./bigfile.zip bigfile
updating: bigfile (deflated 79%)
$ ls -l bigfile 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 将“就地”“加密”文件。换句话说,原始文件将被“加密”文件替换。

$ gzip bigfile
$ ls -l bigfile*
-rw-rw-r-- 1 shs shs  21606751 Apr 15 17:57 bigfile.gz

bzip2

像使用 gzip 命令一样,bzip2 将在你选择的文件“就地”压缩,不留下原始文件。

$ bzip bigfile
$ ls -l bigfile*
-rw-rw-r-- 1 shs shs  18115234 Apr 15 17:57 bigfile.bz2

xz

xz 是压缩命令团队中的一个相对较新的成员,在压缩文件的能力方面,它是一个领跑者。像先前的两个命令一样,你只需要将文件名称提供给命令。再强调一次,原始文件被就地压缩。

$ xz bigfile
$ ls -l bigfile*
-rw-rw-r-- 1 shs shs 13427236 Apr 15 17:30 bigfile.xz

对于大文件来说,你可能会注意到 xz 将比其它的压缩命令花费更多的运行时间,但是压缩的结果却是非常令人赞叹的。

对比

大多数人都听说过“大小不是一切”。所以,让我们比较一下文件大小以及一些当你计划如何压缩文件时的问题。

下面显示的统计数据都与压缩单个文件相关,在上面显示的示例中使用 bigfile。这个文件是一个大的且相当随机的文本文件。压缩率在一定程度上取决于文件的内容。

大小减缩率

当比较时,上面显示的各种压缩命产生下面的结果。百分比表示压缩文件与原始文件的比较效果。

-rw-rw-r-- 1 shs shs 103270400 Apr 16 14:01 bigfile
------------------------------------------------------
-rw-rw-r-- 1 shs shs 18115234 Apr 16 13:59 bigfile.bz2    ~17%
-rw-rw-r-- 1 shs shs 21606751 Apr 16 14:00 bigfile.gz     ~21%
-rw-rw-r-- 1 shs shs 21608322 Apr 16 13:59 bigfile.tgz    ~21%
-rw-rw-r-- 1 shs shs 13427236 Apr 16 14:00 bigfile.xz     ~13%
-rw-rw-r-- 1 shs shs 21606889 Apr 16 13:59 bigfile.zip    ~21%

xz 命令获胜,最终只有压缩文件 13% 的大小,但是所有这些压缩命令都相当显著地减少原始文件的大小。

是否替换原始文件

bzip2gzipxz 命令都用压缩文件替换原始文件。tarzip 命令不替换。

运行时间

xz 命令似乎比其它命令需要花费更多的时间来“加密”文件。对于 bigfile 来说,大概的时间是:

命令      运行时间
tar       4.9 秒
zip       5.2 秒
bzip2    22.8 秒
gzip      4.8 秒
xz       50.4 秒

解压缩文件很可能比压缩时间要短得多。

文件权限

不管你对压缩文件设置什么权限,压缩文件的权限将基于你的 umask 设置,但 bzip2 除外,它保留了原始文件的权限。

与 Windows 的兼容性

zip 命令创建的文件可以在 Windows 系统以及 Linux 和其他 Unix 系统上使用(即解压),而无需安装其他工具,无论这些工具可能是可用还是不可用的。

解压缩文件

解压文件的命令与压缩文件的命令类似。在我们运行上述压缩命令后,这些命令用于解压缩 bigfile

  • tar: tar xf bigfile.tgz
  • zip: unzip bigfile.zip
  • gzip: gunzip bigfile.gz
  • bzip2: bunzip2 bigfile.gz2
  • xz: xz -d bigfile.xzunxz bigfile.xz

自己运行压缩对比

如果你想自己运行一些测试,抓取一个大的且可以替换的文件,并使用上面显示的每个命令来压缩它 —— 最好使用一个新的子目录。你可能需要先安装 xz,如果你想在测试中包含它的话。这个脚本可能更容易地进行压缩,但是可能需要花费几分钟完成。

#!/bin/bash

# 询问用户文件名称
echo -n "filename> "
read filename

# 你需要这个,因为一些命令将替换原始文件
cp $filename $filename-2

# 先清理(以免先前的结果仍然可用)
rm $filename.*

tar cvfz ./$filename.tgz $filename > /dev/null
zip $filename.zip $filename > /dev/null
bzip2 $filename
# 恢复原始文件
cp $filename-2 $filename
gzip $filename
# 恢复原始文件
cp $filename-2 $filename
xz $filename

# 显示结果
ls -l $filename.*

# 替换原始文件
mv $filename-2 $filename

via: https://www.networkworld.com/article/3538471/how-to-compress-files-on-linux-5-ways.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

当在备份重要文件和通过网络发送大文件的时候,对文件进行压缩非常有用。请注意,压缩一个已经压缩过的文件会增加额外开销,因此你将会得到一个更大一些的文件。所以,请不要压缩已经压缩过的文件。在 GNU/Linux 中,有许多程序可以用来压缩和解压缩文件。在这篇教程中,我们仅学习其中两个应用程序。

在类 Unix 系统中,最常见的用来压缩文件的程序是:

  1. gzip
  2. bzip2

1. 使用 gzip 程序来压缩和解压缩文件

gzip 是一个使用 Lempel-Ziv 编码(LZ77)算法来压缩和解压缩文件的实用工具。

1.1 压缩文件

如果要压缩一个名为 ostechnix.txt 的文件,使之成为 gzip 格式的压缩文件,那么只需运行如下命令:

$ gzip ostechnix.txt

上面的命令运行结束之后,将会出现一个名为 ostechnix.txt.gz 的 gzip 格式压缩文件,代替了原始的 ostechnix.txt 文件。

gzip 命令还可以有其他用法。一个有趣的例子是,我们可以将一个特定命令的输出通过管道传递,然后作为 gzip 程序的输入来创建一个压缩文件。看下面的命令:

$ ls -l Downloads/ | gzip > ostechnix.txt.gz

上面的命令将会创建一个 gzip 格式的压缩文件,文件的内容为 Downloads 目录的目录项。

1.2 压缩文件并将输出写到新文件中(不覆盖原始文件)

默认情况下,gzip 程序会压缩给定文件,并以压缩文件替代原始文件。但是,你也可以保留原始文件,并将输出写到标准输出。比如,下面这个命令将会压缩 ostechnix.txt 文件,并将输出写入文件 output.txt.gz

$ gzip -c ostechnix.txt > output.txt.gz

类似地,要解压缩一个 gzip 格式的压缩文件并指定输出文件的文件名,只需运行:

$ gzip -c -d output.txt.gz > ostechnix1.txt

上面的命令将会解压缩 output.txt.gz 文件,并将输出写入到文件 ostechnix1.txt 中。在上面两个例子中,原始文件均不会被删除。

1.3 解压缩文件

如果要解压缩 ostechnix.txt.gz 文件,并以原始未压缩版本的文件来代替它,那么只需运行:

$ gzip -d ostechnix.txt.gz

我们也可以使用 gunzip 程序来解压缩文件:

$ gunzip ostechnix.txt.gz

1.4 在不解压缩的情况下查看压缩文件的内容

如果你想在不解压缩的情况下,使用 gzip 程序查看压缩文件的内容,那么可以像下面这样使用 -c 选项:

$ gunzip -c ostechnix1.txt.gz

或者,你也可以像下面这样使用 zcat 程序:

$ zcat ostechnix.txt.gz

你也可以通过管道将输出传递给 less 命令,从而一页一页的来查看输出,就像下面这样:

$ gunzip -c ostechnix1.txt.gz | less
$ zcat ostechnix.txt.gz | less

另外,zless 程序也能够实现和上面的管道同样的功能。

$ zless ostechnix1.txt.gz

1.5 使用 gzip 压缩文件并指定压缩级别

gzip 的另外一个显著优点是支持压缩级别。它支持下面给出的 3 个压缩级别:

  • 1 – 最快 (最差)
  • 9 – 最慢 (最好)
  • 6 – 默认级别

要压缩名为 ostechnix.txt 的文件,使之成为“最好”压缩级别的 gzip 压缩文件,可以运行:

$ gzip -9 ostechnix.txt

1.6 连接多个压缩文件

我们也可以把多个需要压缩的文件压缩到同一个文件中。如何实现呢?看下面这个例子。

$ gzip -c ostechnix1.txt > output.txt.gz
$ gzip -c ostechnix2.txt >> output.txt.gz

上面的两个命令将会压缩文件 ostechnix1.txtostechnix2.txt,并将输出保存到一个文件 output.txt.gz 中。

你可以通过下面其中任何一个命令,在不解压缩的情况下,查看两个文件 ostechnix1.txtostechnix2.txt 的内容:

$ gunzip -c output.txt.gz
$ gunzip -c output.txt
$ zcat output.txt.gz
$ zcat output.txt

如果你想了解关于 gzip 的更多细节,请参阅它的 man 手册。

$ man gzip

2. 使用 bzip2 程序来压缩和解压缩文件

bzip2gzip 非常类似,但是 bzip2 使用的是 Burrows-Wheeler 块排序压缩算法,并使用 哈夫曼 Huffman 编码。使用 bzip2 压缩的文件以 “.bz2” 扩展结尾。

正如我上面所说的, bzip2 的用法和 gzip 几乎完全相同。只需在上面的例子中将 gzip 换成 bzip2,将 gunzip 换成 bunzip2,将 zcat 换成 bzcat 即可。

要使用 bzip2 压缩一个文件,并以压缩后的文件取而代之,只需运行:

$ bzip2 ostechnix.txt

如果你不想替换原始文件,那么可以使用 -c 选项,并把输出写入到新文件中。

$ bzip2 -c ostechnix.txt > output.txt.bz2

如果要解压缩文件,则运行:

$ bzip2 -d ostechnix.txt.bz2

或者,

$ bunzip2 ostechnix.txt.bz2

如果要在不解压缩的情况下查看一个压缩文件的内容,则运行:

$ bunzip2 -c ostechnix.txt.bz2

或者,

$ bzcat ostechnix.txt.bz2

如果你想了解关于 bzip2 的更多细节,请参阅它的 man 手册。

$ man bzip2

总结

在这篇教程中,我们学习了 gzipbzip2 程序是什么,并通过 GNU/Linux 下的一些例子学习了如何使用它们来压缩和解压缩文件。接下来,我们将要学习如何在 Linux 中将文件和目录归档。

干杯!


via: https://www.ostechnix.com/how-to-compress-and-decompress-files-in-linux/

作者:SK 选题:lujun9972 译者:ucasFL 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我们已经讨论过 Linux 下 gzip 命令的用法。对于初学者来说,gzip 工具主要用于压缩或者展开文件。解压时,在 gzip 命令后添加 -d 选项即可,使用示例如下:

gzip -d [compressed-file-name]

不过,在解压或扩展 gzip 创建的压缩文件时,有另一款完全不同的工具可供使用。谈及的这款工具就是 gunzip。在本文中,我们会使用一些简单、易于理解的例子来解释 gunzip 命令的用法。文中所有示例及指南都在 Ubuntu 16.04 环境下测试。

Linux gunzip 命令

我们现在知道压缩文件可以用 gzip -dgunzip 命令解压。基本的 gunzip 语法为:

gunzip [compressed-file-name]

以下的 Q&A 例子将更清晰地展示 gunzip 工具如何工作:

Q1. 如何使用 gunzip 解压压缩文件?

解压命令非常简单,仅仅需要将压缩文件名称作为参数传递到 gunzip 命令后。

gunzip [archive-name]

比如:

gunzip file1.gz

如何使用 gunzip 解压压缩文件?

Q2. 如何让 gunzip 不删除原始压缩文件?

正如你已注意到的那样,gunzip 命令解压后会删除原始压缩文件。如果你想保留原始压缩文件,可以使用 -c 选项。

gunzip -c [archive-name] > [outputfile-name]

比如:

gunzip -c file1.gz > file1

如何让 gunzip 不删除原始压缩文件?

使用这种方式,原压缩文件不会被删除。

Q3. 如何用 gunzip 解压文件到其他路径?

在 Q&A 中我们已经讨论过 -c 选项的用法。 使用 gunzip 解压文件到工作目录外的其他路径,仅需要在重定向操作符后添加目标目录的绝对路径即可。

gunzip -c [compressed-file] > [/complete/path/to/dest/dir/filename]

示例如下:

gunzip -c file1.gz > /home/himanshu/file1

更多信息

以下从 gzip/gunzip 的 man 页中摘录的细节,对于想了解更多的人会有所助益。

gunzip 在命令行接受一系列的文件,并且将每个文件内容以正确的魔法数开始,且后缀名为 .gz-gz.z-z_z (忽略大小写)的压缩文件,用未压缩的文件替换它,并删除其原扩展名。 gunzip 也可识别一些特殊扩展名的压缩文件,如 .tgz.taz 分别是 .tar.gz.tar.Z 的缩写。在压缩时,gzip 在必要情况下使用 .tgz 作为扩展名,而不是只截取掉 .tar 后缀。

gunzip 目前可以解压 gzipzipcompresscompress -Hpack)产生的文件。gunzip 自动检测输入文件格式。在使用前两种压缩格式时,gunzip 会检验 32 位循环冗余校验码(CRC)。对于 pack 包,gunzip 会检验压缩长度。标准压缩格式在设计上不允许相容性检测。不过 gunzip 有时可以检测出坏的 .Z 文件。如果你解压 .Z 文件时出错,不要因为标准解压没报错就认为 .Z 文件一定是正确的。这通常意味着标准解压过程不检测它的输入,而是直接产生一个错误的输出。SCO 的 compress -H 格式(lzh 压缩方法)不包括 CRC 校验码,但也允许一些相容性检查。

结语

到目前为止提到的 gunzip 基本用法,并不需要过多的学习曲线。我们已包含了一个初学者开始使用它所必须了解的几乎全部知识。想要了解更多的用法,去看 man 页面 吧。


via: https://www.howtoforge.com/linux-gunzip-command/

作者:Himanshu Arora 译者:erialin 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

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 系统上最常用的文件压缩命令包括 zipgzipbzip2xz。 所有这些压缩命令都以类似的方式工作,但是你需要权衡有多少文件要压缩(节省多少空间)、压缩花费的时间、压缩文件在其他你需要使用的系统上的兼容性。

有时压缩一个文件并不会花费很多时间和精力。在下面的例子中,被压缩的文件实际上比原始文件要大。这并不是一个常见情况,但是有可能发生——尤其是在文件内容达到一定程度的随机性。

$ 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.txt.bz2
-rw-rw-r-- 1 shs shs 10219 Dec 8 17:28 zeroes.txt.gz
-rw-rw-r-- 1 shs shs 1660 Dec 8 12:31 zeroes.txt.xz
-rw-rw-r-- 1 shs shs 10360 Dec 8 12:24 zeroes.zip

令人印象深刻的是,你不太可能看到超过 1000 万字节而压缩到少于 50 字节的文件, 因为基本上不可能有这样的文件。

在更真实的情况下 ,大小差异总体上是不同的,但是差别并不显著,比如对于确实不太大的 jpg 图片文件来说。

-rw-r--r-- 1 shs shs 13522 Dec 11 18:58 image.jpg
-rw-r--r-- 1 shs shs 13875 Dec 11 18:58 image.jpg.bz2
-rw-r--r-- 1 shs shs 13441 Dec 11 18:58 image.jpg.gz
-rw-r--r-- 1 shs shs 13508 Dec 11 18:58 image.jpg.xz
-rw-r--r-- 1 shs shs 13581 Dec 11 18:58 image.jpg.zip

在对大的文本文件同样进行压缩时 ,你会看到显著的不同。

$ ls -l textfile*
    -rw-rw-r-- 1 shs shs 8740836 Dec 11 18:41 textfile
    -rw-rw-r-- 1 shs shs 1519807 Dec 11 18:41 textfile.bz2
    -rw-rw-r-- 1 shs shs 1977669 Dec 11 18:41 textfile.gz
    -rw-rw-r-- 1 shs shs 1024700 Dec 11 18:41 textfile.xz
    -rw-rw-r-- 1 shs shs 1977808 Dec 11 18:41 textfile.zip

在这种情况下 ,xz 相较于其他压缩命令有效的减小了文件大小,对于第二的 bzip2 命令也是如此。

查看压缩文件

这些以 more 结尾的命令(bzmore 等等)能够让你查看压缩文件的内容而不需要解压文件。

bzmore (1) - file perusal filter for crt viewing of bzip2 compressed text
lzmore (1) - view xz or lzma compressed (text) files
xzmore (1) - view xz or lzma compressed (text) files
zmore (1) - file perusal filter for crt viewing of compressed text

为了解压缩文件内容显示给你,这些命令做了大量的计算。但在另一方面,它们不会把解压缩后的文件留在你系统上,它们只是即时解压需要的部分。

$ xzmore textfile.xz | head -1
    Here is the agenda for tomorrow's staff meeting:       

比较压缩文件

有几个压缩工具箱包含一个差异命令(例如 :xzdiff),那些工具会把这些工作交给 cmpdiff 来进行比较,而不是做特定算法的比较。例如,xzdiff 命令比较 bz2 类型的文件和比较 xz 类型的文件一样简单 。

如何选择最好的 Linux 压缩工具

如何选择压缩工具取决于你工作。在一些情况下,选择取决于你所压缩的数据内容。在更多的情况下,取决你组织内的惯例,除非你对磁盘空间有着很高的敏感度。下面是一般性建议:

zip 对于需要分享给或者在 Windows 系统下使用的文件最适合。

gzip 或许对你要在 Unix/Linux 系统下使用的文件是最好的。虽然 bzip2 已经接近普及,但 gzip 看起来仍将长期存在。

bzip2 使用了和 gzip 不同的算法,并且会产生比 gzip 更小的文件,但是它们需要花费更长的时间进行压缩。

xz 通常可以提供最好的压缩率,但是也会花费相当长的时间。它比其他工具更新一些,可能在你工作的系统上还不存在。

注意

在压缩文件时,你有很多选择,而在极少的情况下,并不能有效节省磁盘存储空间。


via: https://www.networkworld.com/article/3240938/linux/how-to-squeeze-the-most-out-of-linux-file-compression.html

作者:Sandra Henry-Stocker 译者:singledo 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

很多时候,通过互联网发送或接收大文件和图片是一件令人头疼的事。压缩及解压缩工具正好可以应对这个问题。下面让我们快速浏览一些可以使得我们的工作更加轻松的开源工具。

Tar

Tar 由 'Tape archiver(磁带归档器)' 衍生而来,最初被用来在磁带上归档和存储文件。Tar 是一个 GNU 软件,它可以压缩一组文件(归档),或提取它们以及对已有的归档文件进行相关操作。在存储、备份以及传输文件方面,它是很有用的。在创建归档文件时,Tar 可以保持原有文件和目录结构不变。通过 Tar 归档的文件的后缀名为 ‘.tar’。

基本用法如下:

a) 创建归档 (c / --create)

tar --create --verbose --file=archive.tar file1 file2 file3

tar cvf archive.tar file1 file2 file3

tar cvf

创建一个归档

b) 列出归档文件内容 ( t / --list)

tar --list archive.tar

tar tvf

列出归档中包含的文件

c) 提取归档 (x / --extract)

tar xvf archive.tar

tar xvf archive.tar --wildcards '*.c'    
-  从归档中提取后缀名为 *.c 的文件。

tar xvf

提取文件

tar xvf --wildcards

只提取需要的文件

d) 对归档文件进行更新 ( u / --update)

tar uvf archive.tar newfile.c     
-  假如归档的newfile.c  要比先前已经归档的新,则添加更新的 newfile.c 到归档里面.

tar uvf

更新一个归档

e) 从归档中删除文件 (--delete)

tar --delete -f archive.tar file1.c   
- 从压缩包'archive.tar' 中删除文件'file1.c' 

tar --delete

删除文件

更加具体的使用方法请参考tar 主页

Gzip / Gunzip

Gzip 即 GNU zip,它是一个被广泛用于 Linux 操作系统中的压缩应用,被其压缩的文件的后缀名为'*.gz' 。

基本用法如下:

a) 压缩文件

gzip file(s)

每个文件将被单独压缩

gzip

压缩文件

通常在压缩完成后,它会将原来的文件删除。我们可以使用 -c 选项来保留原来的文件。

gzip -c file > file.gz

gzip-c

压缩后保留原有文件

我们也可以将一组文件压缩到一个单独的文件中

cat file1 file2 file3 | gzip > archieve.gz

gz group

压缩一组文件

b) 检查压缩比

被压缩文件的压缩比可以使用 ‘-l’ 选项来进行检验。

gzip -l archieve.gz

gzip -l

检查压缩率

c) 解压文件

Gunzip 用来解压文件,在这里,原有的(压缩)文件在被解压后同样会被删除。使用 -c选项来保留原始文件。

gunzip -c archieve.gz

gunzip -c

解压文件

gzip 加上'-d'选项 和 gunzip 对压缩文件有同样的效果。

更多细节可以从 gzip 主页 得到。

Bzip2 / Bunzip2

同 gzip 一样,Bzip2 也是一个压缩工具,与其他传统的工具相比,它可以将文件压缩到更小,但其缺点为:运行速度比 gzip 慢。

基本用法如下:

a) 压缩文件

一般情况下,针对压缩而言,Bzip2 不用什么选项,将被压缩的文件被传递为它的参数。每个文件被单独压缩,且压缩文件以 'bz2' 为后缀名。

bzip2 file1 file2 file3

bzip2

文件压缩

使用 '-k' 选项可以使得在压缩或解压缩之后保留原有的文件。

bzip2 -k

在压缩后保留原有文件

b) 解压

'-d' 选项被用来解压缩。

bzip2 -d

使用 -d 选项解压缩文件

也可以使用 bunzip2 来解压缩。

bunzip2 filename

bunzip2

解压文件

bunzip2 可以解压后缀名为 bz2, bz, tbz2 和 tbz 的文件。带有 tbz2 和 tbz 的文件在压缩后,后缀名将变为'.tar' 。

bzip2 -dc   
-   执行解压文件到标准输出的功能。

7-zip

7-zip 是另一个开源压缩软件。它使用 7z 这种新的压缩格式,并支持高压缩比。因此,它被认为是比先前提及的压缩工具更好的软件。在 Linux 下,可以通过 p7zip 软件包得到,该软件包里包含 3 个二进制文件: 7z, 7za 和 7zr,读者可以参考 p7zip wiki 来了解这三个二进制文件之间的不同。在本篇中,我们将使用 7zr 来解释 7-zip 的用法。归档文件以 '.7z' 为后缀名。

基本用法如下:

a) 创建归档

7zr a archive-name.7z file-name(s) / directory-name(s)

7zr a

创建一个归档文件

b) 列出归档包含文件

7zr l archive-name.7z

7zr l

列出归档中包含的文件

c) 提取归档文件

7zr e archive-name.7z

7zr e

提取归档

d) 更新归档文件

7zr u archive-name.7z new-file

7zr u

更新一个归档文件

e) 从归档文件中删除文件

7zr d archive-name.7z file-to-be-deleted

7zr d

删除文件

7zr l

确认文件删除


via: http://linoxide.com/tools/linux-compress-decompress-tools/

作者:B N Poornima 译者:FSSlc 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出