运维日记013 - Linux下的压缩工具

本文介绍了Linux环境下常用的压缩工具,包括compress、gzip和bzip2。文章详细解释了这些工具的基本用法及各种参数选项,例如如何指定压缩级别、保留原始文件、查看压缩文件内容等。

运维日记013 - Linux下的压缩工具

在Windows下很多人已经习惯了用winzip或者winrar进行文件的打包压缩,而在Linux下打包和压缩通常是分开进行的。Linux下有专门的打包工具和压缩工具,压缩工具通常只能处理一个文件,而如果要处理多个文件通常要先用打包工具打包成一个文件然后再用压缩工具处理。关于打包工具tar,我们在《运维日记012》中已经探讨过了,这里我们专门说一下Linux下的压缩工具。

compress

Compress应该是资格很老的压缩工具了,你看到一些以.Z为后缀的压缩文件就是用compress压缩的。GNU开发的gzip压缩工具具备更高的压缩比,同时gzip也能解压compress压缩的.Z文件,所以后来compress就被gzip取代了。只有在一些非常古老的UNIX系统上还会使用compress,而目前主流的Linux发行版也许默认都不会安装这个软件。对于compress,你只需要知道有它,知道.Z文件是怎么来的即可。

gzip

gzip应该算是Linux里应用最广的压缩命令,有时候你还会看到gunzip这个命令,其实gunzip就是指向gzip的链接。在默认状态下,gzip压缩后会删除原始文件,并生成.gz为后缀的压缩文件。如:

$ cp /etc/hostname /tmp
$ gzip /tmp/hostname

这时我们可以看到/tmp/hostname文件不见了,而生成一个hostname.gz的文件。我们还可以用-v参数来显示一些详细信息,诸如文件的压缩比等信息:

$ gzip -v /tmp/hostname 
/tmp/hostname: -11.8% -- replaced with /tmp/hostname.gz

-t参数可以用来检验压缩文件是否有损坏:

$ gzip -tv hostname.gz 
hostname.gz:  OK

我们还可以用-#(#为1~9之间的数字)来指定压缩等级。1压缩速度最快,但压缩比最差;9最慢,但压缩比最高。默认压缩等级为6。

$ cp /etc/fstab /tmp
$ gzip -9v fstab
fstab:  40.0% -- replaced with fstab.gz

可以用-d参数对.gz文件进行解压:

$ cd /tmp
$ gzip -d fstab.gz

同样解压完成后,压缩文件会被删除。我们能不能在压缩或者解压的时候,不删除源文件呢?可以的,使用-c参数。-c参数原本的作用是将处理后的数据输出到屏幕上,可以结合重定向来实现这一功能:

$ gzip -cv fstab > fstab.gz
fstab:  40.0%

$ ls -l fstab*
-rw-r--r-- 1 sailor-m sailor-m 477  920 10:44 fstab
-rw-r--r-- 1 sailor-m sailor-m 310  920 11:04 fstab.gz

$ gzip -dcv fstab.gz > fstab2
fstab.gz:  40.0%

$ s -l fstab*
-rw-r--r-- 1 sailor-m sailor-m 477  920 10:44 fstab
-rw-r--r-- 1 sailor-m sailor-m 477  920 11:06 fstab2
-rw-r--r-- 1 sailor-m sailor-m 310  920 11:04 fstab.gz

如果是纯文本文件压缩后生成的.gz文件,无需解压可以之间使用zcat命令查看,如:

$ zcat /tmp/fstab.gz
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
/dev/mapper/pdc_baiibafi1 /               ext4    errors=remount-ro 0       1
/dev/mapper/pdc_baiibafi3 /home           ext4    defaults        0       2

bzip2

GNU后来开发了bzip2这个压缩比更高的压缩工具。Bzip2的常用用法与gzip基本相同。前面我们介绍的gzip的几个参数-c-v-d-#的含义和用法与bzip2完全相同。这里我再介绍个-k参数,表示保留(keep)原文件而不删除(否则默认情况下跟gzip一样,bzip2处理完后会删除原始文件)。如:

$ cp /etc/passwd /tmp
$ cd /tmp
$ bzip2 -kv passwd
 passwd:   2.422:1,  3.303 bits/byte, 58.72% saved, 1979 in, 817 out.

$ ls -lh passwd*
-rw-r--r-- 1 sailor-m sailor-m 2.0K  920 15:43 passwd
-rw-r--r-- 1 sailor-m sailor-m  817  920 15:43 passwd.bz2

当然如同gzip一样,我们可以使用-c参数和重定向实现同样目的:

$ bzip2 -cv passwd > passwd2.bz2

这两种方式的区别在于前一种方式生成的压缩文件的文件名为原文件名加上.bz2后缀,而后一种方式可以直接指定你想要的文件名,甚至可以不要.bz2后缀(当然不推荐你这样做)。这个-k参数在gzip中也是有的,功能和用法一样。

bzip2命令还有一个-z参数,它跟-d参数对应,用于显式指定压缩,默认情况下可缺省。而gzip没有这个参数。

如果是纯文本文件用bzip2压缩后,可以用bzcat命令直接查看而无需先解压:

$ bzcat passwd.bz2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值