在Linux的环境中,压缩文件的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』,为什么会有这样的扩展名呢?不是说 Linux 的扩展名没有什么作用吗?
这是因为 Linux 支持的压缩命令非常多,且不同的命令所用的压缩技术并不相同,当然彼此之间可能就无法互通压缩/解压缩文件罗。所以,当你下载到某个压缩档时,自然就需要知道该文件是由哪种压缩命令所制作出来的,好用来对照著解压缩啊!也就是说,虽然 Linux 文件的属性基本上是与档名没有绝对关系的,但是为了帮助我们人类小小的脑袋瓜子,所以适当的扩展名还是必要的!底下我们就列出几个常见的压缩文件扩展名吧:
*.Z compress 程序压缩的文件; *.gz gzip 程序压缩的文件; *.bz2 bzip2 程序压缩的文件; *.tar tar 程序打包的数据,并没有压缩过; *.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩 *.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩 |
Linux上常见的压缩命令就是 gzip 与 bzip2 ,至於 compress 已经退流行了。gzip 是由 GNU 计画所开发出来的压缩命令,该命令已经取代了 compress 。后来 GNU 又开发出 bzip2 这个压缩比更好的压缩命令!不过,这些命令通常仅能针对一个文件来压缩与解压缩,如此一来,每次压缩与解压缩都要一大堆文件,岂不烦人?此时,那个所谓的『打包软件, tar』就显的很重要啦!
这个 tar 可以将很多文件『打包』成为一个文件!甚至是目录也可以这么玩。不过,单纯的 tar 功能仅是『打包』而已,亦即是将很多文件集结成为一个文件,事实上,他并没有提供压缩的功能,后来,GNU 计画中,将整个 tar 与压缩的功能结合在一起,如此一来提供使用者更方便并且更强大的压缩与打包功能!底下我们就来谈一谈这些在 Linux 底下基本的压缩命令吧!
gzip, zcat
gzip 可以说是应用度最广的压缩命令了!目前 gzip 可以解开 compress, zip 与 gzip 等软件所压缩的文件。至於 gzip 所创建的压缩档为 *.gz 的档名喔!让我们来看看这个命令的语法吧:
[root@www ~]# gzip [-cdtv#] 档名 [root@www ~]# zcat 档名.gz 选项与参数: -c :将压缩的数据输出到萤幕上,可透过数据流重导向来处理; -d :解压缩的参数; -t :可以用来检验一个压缩档的一致性~看看文件有无错误; -v :可以显示出原文件/压缩文件的压缩比等资讯; -# :压缩等级,-1 最快,但是压缩比最差、-9 最慢,但是压缩比最好!默认是 -6 范例一:将 /etc/man.config 复制到 /tmp ,并且以 gzip 压缩 [root@www ~]# cd /tmp [root@www tmp]# cp /etc/man.config . [root@www tmp]# gzip -v man.config man.config: 56.1% -- replaced with man.config.gz [root@www tmp]# ll /etc/man.config /tmp/man* -rw-r--r-- 1 root root 4617 Jan 6 2007 /etc/man.config -rw-r--r-- 1 root root 2684 Nov 10 17:24 /tmp/man.config.back.Z -rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz <==gzip压缩比较佳 |
当你使用 gzip 进行压缩时,在默认的状态下原本的文件会被压缩成为 .gz 的档名,原始文件就不再存在了。您也可以发现,由於 gzip 的压缩比要比 compress 好的多,所以当然建议使用 gzip 啦!此外,使用 gzip 压缩的文件在 Windows 系统中,竟然可以被 WinRAR 这个软件解压缩呢!很好用吧!至於其他的用法如下:
范例二:由於 man.config 是文字档,请将范例一的压缩档的内容读出来! [root@www tmp]# zcat man.config.gz # 由於 man.config 这个原本的文件是是文字档,因此我们可以尝试使用 zcat 去读取! # 此时萤幕上会显示 man.config.gz 解压缩之后的文件内容! 范例三:将范例一的文件解压缩 [root@www tmp]# gzip -d man.config.gz # 不要使用 gunzip 这个命令,不好背!使用 gzip -d 来进行解压缩! # 与 gzip 相反, gzip -d 会将原本的 .gz 删除,产生原本的 man.config 文件。 范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件 [root@www tmp]# gzip -9 -c man.config > man.config.gz |
其实 gzip 的压缩已经最佳化过了,所以虽然 gzip 提供 1~9 的压缩等级,不过使用默认的 6 就非常好用了!因此上述的范例四可以不要加入那个 -9 的选项。范例四的重点在那个 -c 与 > 的使用罗!
cat 可以读取纯文字档,那个 zcat 则可以读取纯文字档被压缩后的压缩档!由於 gzip 这个压缩命令主要想要用来取代 compress 的,所以不但 compress 的压缩文件可以使用 gzip 来解开,同时 zcat 这个命令可以同时读取 compress 与 gzip 的压缩档呦!
bzip2, bzcat
若说 gzip 是为了取代 compress 并提供更好的压缩比而成立的,那么 bzip2 则是为了取代 gzip 并提供更佳的压缩比而来的。bzip2 真是很不错用的东西~这玩意的压缩比竟然比 gzip 还要好~至於 bzip2 的用法几乎与 gzip 相同!看看底下的用法吧!
[root@www ~]# bzip2 [-cdkzv#] 档名 [root@www ~]# bzcat 档名.bz2 选项与参数: -c :将压缩的过程产生的数据输出到萤幕上! -d :解压缩的参数 -k :保留原始文件,而不会删除原始的文件喔! -z :压缩的参数 -v :可以显示出原文件/压缩文件的压缩比等资讯; -# :与 gzip 同样的,都是在计算压缩比的参数, -9 最佳, -1 最快! 范例一:将刚刚的 /tmp/man.config 以 bzip2 压缩 [root@www tmp]# bzip2 -z man.config # 此时 man.config 会变成 man.config.bz2 ! 范例二:将范例一的文件内容读出来! [root@www tmp]# bzcat man.config.bz2 # 此时萤幕上会显示 man.config.bz2 解压缩之后的文件内容!! 范例三:将范例一的文件解压缩 [root@www tmp]# bzip2 -d man.config.bz2 范例四:将范例三解开的 man.config 用最佳的压缩比压缩,并保留原本的文件 [root@www tmp]# bzip2 -9 -c man.config > man.config.bz2 |
好了,那么如果我想要读取这个文件的内容呢?是否一定要解开?当然不需要罗!可以使用简便的 bzcat 这个命令来读取内容即可!例如上面的例子中,我们可以使用 bzcat man.config.bz2 来读取数据而不需要解开!此外,当你要解开一个压缩档时,这个文件的名称为 .bz, .bz2, .tbz, .tbz2 等等,那么就可以尝试使用 bzip2 来解看看啦!当然罗,也可以使用 bunzip2 这个命令来取代 bzip2 -d 罗