linux 下文件压缩与解压:gzip,zip,bzip2 文件压缩和归档( 转)

14.3. 文件压缩和归档

有时候,我们需要把一组文件贮存成一个文件以便备份或传输到另一个目录甚至另一个计算机上。有时候,我们还需要把文件压缩成一个文件,因而它们仅使用少量磁盘空间并能更快地通过互联网下载。

理解归档文件(archive file)压缩文件(compressed file) 间的区别对用户来说十分重要。归档文件是一个文件和目录的集合,而这个集合被贮存在一个文件中。归档文件没有经过压缩 — 它所使用的磁盘空间是其中所有文件和目录的总和。压缩文件也是一个文件和目录的集合,且这个集合也被贮存在一个文件中,但是 ,它的贮存方式使其所占用的磁盘空间比其中所有文件和目录的总和要少。如果你在计算机上的磁盘空间不足,你可以压缩不常使用的、或不再使用但想保留的文件。你甚至可以创建归档文件,然后再将其压缩来节省磁盘空间。

注记
归档文件不是压缩文件,但是压缩文件可以是归档文件。

14.3.1. 使用文件打包器

Red Hat Linux 包括了一个图形化的压缩工具“文件打包器 ”。它可以压缩、解压、并归档文件和目录。文件打包器支持通用的 UNIX 和 Linux 文件压缩和归档格式,而且它的界面简单,文档丰富。它还被集成到桌面环境和图形化文件管理器中,使处理归档文件的工作更加简便易行。

要启动 文件打包器,点击「主菜单」 => 「附件」 => 「文件打包器」 。你还可以从 shell 提示下键入 file-roller 来启动文件打包器图 14-1 显示了运行中的文件打包器

窍门
如果你使用的是文件管理器(如 Nautilus ),你可以双击你想解除归档或解压的文件来启动文件打包器 。文件打包器的浏览窗口就会出现,其中的文件夹里显示了你要解压或解除归档的文件,以便你来抽取或浏览。

图 14-1. 运行中的文件打包器

14.3.1.1. 使用文件打包器来解压或解除归档

要取消归档或者(并且)解压文件,点击工具栏上的「打开」 按钮。一个文件菜单就会弹出,允许你选择你要操作的归档。譬如,如果你的主目录中有一个 foo.tar.gz 文件,突出显示该文件,然后点击「确定」 。该文件就会作为文件夹出现在文件打包器 的主浏览窗口中,你可以双击该文件夹图标来翻阅其中的内容。文件打包器保留所有原有的目录和子目录结构,这便于你在归档中查找某一特定文件。你可以点击「抽取」 按钮,选择你要保存这些解除归档后的文件的目录,然后点击「确定」 按钮来抽取其中的某个文件或整个归档。

14.3.1.2. 使用文件打包器 来创建归档文件

如果你需要腾出一些硬盘空间,或者把多个文件或某一目录下的所有文件发送给另一名用户,文件打包器允许你创建文件和目录的归档。要创建新归档,点击工具栏上的「新建」 按钮。一个文件浏览器会弹出,允许你指定归档名称和压缩技术。譬如,你可以从拉下菜单中选择「用 gzip 压缩的 Tar (tar.gz) 格式,然后键入你想创建的归档文件的名称。点击「确定」 ,你就可以在新归档中添加文件和目录了。要在你的新归档中添加文件,点击「添加」 ,这会弹出一个浏览窗口(图 14-2 ),你可以从中查找要放入归档中的文件或目录。结束后点击「确定」「关闭」 按钮来关闭归档。

图 14-2. 使用文件打包器 来创建归档

窍门
文件打包器能够执行的任务不止这里提到的这些。请阅读文件打包器 的说明书(点击「帮助」 => 「说明书」 )来获取详细信息。

14.3.2. 在 shell 提示下压缩文件

压缩文件使用较少磁盘空间,并且比未压缩的大文件下载速度要快。在 Red Hat Linux 中,你可以使用的文件压缩工具有:gzipbzip2 、和 zip

推荐你使用 bzip2 压缩工具,因为它提供了最大限度的压缩,并且可在多数类似 UNIX 的操作系统上找到。gzip 压缩工具也可以在类似 UNIX 的操作系统上找到。如果你需要在 Linux 和其它操作系统如 MS Windows 间传输文件,你应该使用 zip ,因为该命令与 Windows 上的压缩工具最兼容。

压缩工具 文件扩展名 解压工具
gzip .gz gunzip
bzip2 .bz2 bunzip2
zip .zip unzip

表 14-1. 压缩工具

按照约定俗成,用 gzip 来压缩的文件的扩展名是 .gz ;用 bzip2 来压缩的文件的扩展名是 .bz2 ;用 zip 压缩的文件的扩展名是 .zip

gzip 压缩的文件可以使用 gunzip 来解压;用 bzip2 压缩的文件可以使用 bunzip2 来解压;用 zip 压缩的文件可以使用 unzip 来解压。

14.3.2.1. bzip2 和 bunzip2

要使用 bzip2 来压缩文件,在 shell 提示下键入以下命令:

bzip2 filename

文件即会被压缩并被保存为 filename.bz2

要扩展压缩的文件,键入以下命令:

bunzip2 filename.bz2

filename.bz2 文件会被删除,而继之以 filename

你可以使用 bzip2 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:

bzip2 filename.bz2 file1 file2 file3 /usr/work/school 

上面的命令把 file1file2 file3 、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.bz2 文件中。

窍门
要获得有关这两个命令的详细信息,在 shell 提示下键入 man bzip2man bunzip2 来阅读 bzip2bunzip2 命令的说明书页。

14.3.2.2. gzip 和 gunzip

要使用 gzip 来压缩文件,在 shell 提示下键入以下命令:

gzip filename

文件即会被压缩,并被保存为 filename.gz

要扩展压缩的文件,键入以下命令:

gunzip filename.gz

filename.gz 会被删除,而继之以 filename

你可以使用 gzip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:

gzip -r filename.gz file1 file2 file3 /usr/work/school 

上面的命令把 file1file2 file3 、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.gz 文件中。

窍门
要获得有关这两个命令的详细信息,在 shell 提示下键入 man gzipman gunzip 来阅读 gzipgunzip 命令的说明书页。

14.3.2.3. zip 和 unzip

要使用 zip 来压缩文件,在 shell 提示下键入下面的命令:

zip -r filename.zip filesdir

在这个例子里,filename.zip 代表你创建的文件,filesdir 代表你想放置新 zip 文件的目录。-r 选项指定你想递归地(recursively) 包括所有包括在 filesdir 目录中的文件。

要抽取 zip 文件的内容,键入以下命令:

unzip filename.zip

你可以使用 zip 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:

zip -r filename.zip file1 file2 file3 /usr/work/school 

上面的命令把 file1file2 file3 、以及 /usr/work/school 目录的内容(假设这个目录存在)压缩起来,然后放入 filename.zip 文件中。

窍门
要获得有关这两个命令的详细信息,在 shell 提示下键入 man zipman unzip 来阅读 zipunzip 命令的说明书页。

14.3.3. 在 shell 提示下给文件归档

tar 文件是几个文件和(或)目录在一个文件中的集合。这是创建备份和归档的佳径。

tar 使用的选项有:

  • -c — 创建一个新归档。
  • -f — 当与 -c 选项一起使用时,创建的 tar 文件使用该选项指定的文件名;当与 -x 选项一起使用时,则解除该选项指定的归档。
  • -t — 显示包括在 tar 文件中的文件列表。
  • -v — 显示文件的归档进度。
  • -x — 从归档中抽取文件。
  • -z — 使用 gzip 来压缩 tar 文件。
  • -j — 使用 bzip2 来压缩 tar 文件。

要创建一个 tar 文件,键入:

tar -cvf filename.tar directory/file

在以上的例子中,filename.tar 代表你创建的文件,directory/file 代表你想放入归档文件内的文件和目录。

你可以使用 tar 命令同时处理多个文件和目录,方法是将它们逐一列出,并用空格间隔:

tar -cvf filename.tar /home/mine/work /home/mine/school

上面的命令把 /home/mine 目录下的 workschool 子目录内的所有文件都放入当前目录中一个叫做 filename.tar 的新文件里。

要列出 tar 文件的内容,键入:

tar -tvf filename.tar

要抽取 tar 文件的内容,键入:

tar -xvf filename.tar

这个命令不会删除 tar 文件,但是它会把被解除归档的内容复制到当前的工作目录下,并保留归档文件所使用的任何目录结构。譬如,如果这个 tar 文件中包含一个叫做 bar.txt 的文件,而这个文件包含在 foo/ 目录中,那么,抽取归档文件将会导致在你当前的工作目录中创建 foo/ 目录,该目录中包含 bar.txt 文件。

请记住,tar 默认不压缩文件。要创建一个使用 tar 和 bzip 来归档压缩的文件,使用 -j 选项:

tar -cjvf filename.tbz file

按照约定俗成,用 bzip2 压缩的 tar 文件具有 .tbz 扩展名。不过,有时用户使用 tar.bz2 扩展名来归档他们的文件。

以上命令创建了一个归档文件,然后将其压缩为 filename.tbz 文件。如果你使用 bunzip2 命令为 filename.tbz 文件解压,filename.tbz 文件会被删除,继之以 filename.tar 文件。

你还可以用一个命令来扩展并解除归档 bzip tar 文件:

tar -xjvf filename.tbz

要创建一个用 tar 和 gzip 归档并压缩的文件,使用 -z 选项:

tar -czvf filename.tgz file

按照约定俗成,使用 gzip 来压缩的 tar 文件具有 .tgz 扩展名。

这个命令创建归档文件 filename.tar ,然后把它压缩为 filename.tgz 文件(文件 filename.tar 不被保留)。如果你使用 gunzip 命令来给 filename.tgz 文件解压,filename.tgz 文件会被删除,并被替换为 filename.tar

你可以用单个命令来扩展 gzip tar 文件:

tar -xzvf filename.tgz

窍门
键入命令 man tar 来阅读 tar 命令的详细信息。

发表于 @ 2006年10月11日 11:27:0

from http://blog.csdn.net/tommy_lgj/archive/2006/10/11/1329920.aspx

tar命令

tar可以为文件和目录创建档案。利用tar,用户可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar 最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案,如软盘。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。

语法:tar [主选项+辅选项] 文件或者目录

使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用。

主选项:

c 创建新的档案文件。如果用户想备份一个目录或是一些文件,就要选择这个选项。

r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件,又发现还有一个目录或是一些文件忘记备份了,这时可以使用该选项,将忘记的目录或文件追加到备份文件中。

t 列出档案文件的内容,查看已经备份了哪些文件。

u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中找不到要更新的文件,则把它追加到备份文件的最后。

x 从档案文件中释放文件。

辅助选项:

b 该选项是为磁带机设定的。其后跟一数字,用来说明区块的大小,系统预设值为20(20*512 bytes)。

f 使用档案文件或设备,这个选项通常是必选的。

k 保存已经存在的文件。例如我们把某个文件还原,在还原的过程中,遇到相同的文件,不会进行覆盖。

m 在还原文件时,把所有文件的修改时间设定为现在。

M 创建多卷的档案文件,以便在几个磁盘中存放。

v 详细报告tar处理的文件信息。如无此选项,tar不报告文件信息。

w 每一步都要求确认。

z 用gzip来压缩/解压缩文件,加上该选项后可以将档案文件进行压缩,但还原时也一定要使用该选项进行解压缩。

Linux下的压缩文件剖析

对于刚刚接触Linux的人来说,一定会给Linux下一大堆各式各样的文件名给搞晕。别个不说,单单就压缩文件为例,我们知道在Windows下最常见的压缩文件就只有两种,一是,zip,另一个是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等众多的压缩文件名,此外windows下的.zip和.rar也可以在Linux下使用,不过在Linux使用.zip和.rar的人就太少了。本文就来对这些常见的压缩文件进行一番小结,希望你下次遇到这些文件时不至于被搞晕

在具体总结各类压缩文件之前呢,首先要 弄清两个概念:打包和压缩。打包是指将一大堆文件或目录什么的变成一个总的文件,压缩则是将一个大的文件通过一些压缩算法变成一个小文件。为什么要区分这两个概念呢?其实这源于Linux中的很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你就得先借助另它的工具将这一大堆文件先打成一个包,然后再就原来的压缩程序进行压缩。

Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。生成tar包后,就可以用其它的程序来进行压缩了,所以首先就来讲讲tar命令的基本用法:

tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下:

# tar -cf all.tar *.jpg

这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包,-f指定包的文件名。

# tar -rf all.tar *.gif

这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。

# tar -uf all.tar logo.gif

这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

# tar -tf all.tar

这条命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar

这条命令是解出all.tar包中所有文件,-t是解开的意思

以上就是tar的最基本的用法。为了方便用户在打包解包的同时可以压缩或解压文件,tar提供了一种特殊的功能。这就是tar可以在打包或解包的同时调用其它的压缩程序,比如调用gzip、bzip2等。

1) tar调用gzip

gzip是GNU组织开发的一个压缩程序,.gz结尾的文件就是gzip压缩的结果。与gzip相对的解压程序是gunzip。tar中使用-z这个参数来调用gzip。下面来举例说明一下:

# tar -czf all.tar.gz *.jpg

这条命令是将所有.jpg的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,包名为all.tar.gz

# tar -xzf all.tar.gz

这条命令是将上面产生的包解开。

2) tar调用bzip2

bzip2是一个压缩能力更强的压缩程序,.bz2结尾的文件就是bzip2压缩的结果。与bzip2相对的解压程序是bunzip2。tar中使用-j这个参数来调用gzip。下面来举例说明一下:

# tar -cjf all.tar.bz2 *.jpg

这条命令是将所有.jpg的文件打成一个tar包,并且将其用bzip2压缩,生成一个bzip2压缩过的包,包名为all.tar.bz2

# tar -xjf all.tar.bz2

这条命令是将上面产生的包解开。

3)tar调用compress

compress也是一个压缩程序,但是好象使用compress的人不如gzip和bzip2的人多。.Z结尾的文件就是bzip2压缩的结果。与 compress相对的解压程序是uncompress。tar中使用-Z这个参数来调用gzip。下面来举例说明一下:

# tar -cZf all.tar.Z *.jpg

这条命令是将所有.jpg的文件打成一个tar包,并且将其用compress压缩,生成一个uncompress压缩过的包,包名为all.tar.Z

# tar -xZf all.tar.Z

这条命令是将上面产生的包解开

有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文件作一个小结:

1)对于.tar结尾的文件

tar -xf all.tar

2)对于.gz结尾的文件

gzip -d all.gz

gunzip all.gz

3)对于.tgz或.tar.gz结尾的文件

tar -xzf all.tar.gz

tar -xzf all.tgz

4)对于.bz2结尾的文件

bzip2 -d all.bz2

bunzip2 all.bz2

5)对于tar.bz2结尾的文件

tar -xjf all.tar.bz2

6)对于.Z结尾的文件

uncompress all.Z

7)对于.tar.Z结尾的文件

tar -xZf all.tar.z

另外对于Window下的常见压缩文件.zip和.rar,Linux也有相应的方法来解压它们:

1)对于.zip

linux下提供了zip和unzip程序,zip是压缩程序,unzip是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:

# zip all.zip *.jpg

这条命令是将所有.jpg的文件压缩成一个zip包

# unzip all.zip

这条命令是将all.zip中的所有文件解压出来

2)对于.rar

要在linux下处理.rar文件,需要安装RAR for Linux,可以从网上下载,但要记住,RAR for Linux

不是免费的;然后安装:

# tar -xzpvf rarlinux-3.2.0.tar.gz

# cd rar

# make

这样就安装好了,安装后就有了rar和unrar这两个程序,rar是压缩程序,unrar是解压程序。它们的参数选项很多,这里只做简单介绍,依旧举例说明一下其用法:

# rar a all *.jpg

这条命令是将所有.jpg的文件压缩成一个rar包,名为all.rar,该程序会将.rar 扩展名将自动附加到包名后。

# unrar e all.rar

这条命令是将all.rar中的所有文件解压出来

到此为至,我们已经介绍过linux下的tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、 zip、unzip、rar、unrar等程式,你应该已经能够使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这10种压缩文件进行解压了,以后应该不需要为下载了一个软件而不知道如何在Linux下解开而烦恼了。而且以上方法对于Unix也基本有效。

本文介绍了linux下的压缩程式tar、gzip、gunzip、bzip2、bunzip2、compress、uncompress、zip、 unzip、rar、unrar等程式,以及如何使用它们对.tar、.gz、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、.tar.Z、.zip、.rar这10种压缩文件进行操作。

猜你喜欢

转载自cocos.iteye.com/blog/1059724