首页 > 代码库 > 第九章、文件与文件系统的压缩与打包 Linux 系统常见的压缩命令
第九章、文件与文件系统的压缩与打包 Linux 系统常见的压缩命令
Linux 系统常见的压缩命令:
在Linux中,压缩文件的扩展名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』
Linux 支持的压缩命令非常多,且不同的命令所用的压缩技术并不相同,彼此之间可能就无法相互压缩/解压缩文件。 所以,当你下载到某个压缩档时,自然就需要知道该文件是由哪种压缩命令所制作出来的,好用来对照著解压缩!虽然 Linux 文件的属性基本上是与档名没有绝对关系的, 但是为了帮助我们人类,所以适当的扩展名还是必要的!
*.Z compress 程序压缩的文件;*.gz gzip 程序压缩的文件;*.bz2 bzip2 程序压缩的文件;*.tar tar 程序打包的数据,并没有压缩过;*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩*.tar.bz2 tar 程序打包的文件,其中并且经过 bzip2 的压缩 |
tar 可以将很多文件(目录)『打包』成为一个文件,它并没有提供压缩的功能,后来,GNU 计划将tar 与压缩的功能结合在一起,如此一来可以提供给使用者更方便并且更强大的压缩与打包功能!
compress
gzip能解开使用 compress 压缩的文件!
[root@www ~]# yum install ncompressbase 100% |=========================| 1.1 kB 00:00updates 100% |=========================| 951 B 00:00addons 100% |=========================| 951 B 00:00extras 100% |=========================| 1.1 kB 00:00Setting up Install ProcessParsing package install argumentsResolving Dependencies <==开始分析相依性--> Running transaction check---> Package ncompress.i386 0:4.2.4-47 set to be updated--> Finished Dependency ResolutionDependencies Resolved======================================================= Package Arch Version Repository Size=======================================================Installing: ncompress i386 4.2.4-47 base 23 kTransaction Summary=======================================================Install 1 Package(s) <==最后分析所要安装的软件数Update 0 Package(s)Remove 0 Package(s)Total download size: 23 kIs this ok [y/N]: y <==这里请按下 y 来确认安装Downloading Packages:(1/1): ncompress-4.2.4-47 100% |=========================| 23 kB 00:00warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <centos-5-key@centos.org>" from http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5Is this ok [y/N]: y <==这里则是与数码签章有关Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Installing: ncompress ######################### [1/1 |
[root@www ~]# compress [-rcv] 文件或目录 <==这里是压缩[root@www ~]# uncompress 文件.Z <==这里是解压缩选项与参数:-r :可以连同目录下的文件也同时给予压缩!-c :将压缩数据输出成为 standard output (输出到萤幕)-v :显示压缩后的文件资讯以及压缩过程中的一些档名变化。范例一:将 /etc/man.config 复制到 /tmp ,并加以压缩[root@www ~]# cd /tmp[root@www tmp]# cp /etc/man.config .[root@www tmp]# compress -v man.configman.config: -- replaced with man.config.Z Compression: 41.86%[root@www tmp]# ls -l /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:14 /tmp/man.config.Z <==经过压缩的文件! |
复制到 /tmp 的 man.config 不见了!因为被压缩成为 man.config.Z,在默认的情况中,被 compress 压缩的原始文件会不见,而压缩文件会被创建起来, 而且扩展名会是 *.Z。
范例二:将刚刚的压缩档解开[root@www tmp]# uncompress man.config.Z[root@www tmp]# ll man*-rw-r--r-- 1 root root 4617 Nov 10 17:14 man.config |
解压缩后压缩档却又不存在。如果想要保留原始文件且又要创建压缩档可以使用 -c 的语法!
范例三:将 man.config 压缩成另外一个文件来备份[root@www tmp]# compress -c man.config > man.config.back.Z[root@www tmp]# ll man*-rw-r--r-- 1 root root 4617 Nov 10 17:14 man.config-rw-r--r-- 1 root root 2684 Nov 10 17:24 man.config.back.Z# -c会将压缩过程的数据输出到萤幕上,而不是写入成为 # *.Z 的压缩档。所以,可以透过数据流重导向的方法将数据输出成为另一个档名。 |
compress 已经很少人在使用了,因为compress无法解开 *.gz 的文件,而 gzip 则可以解开 *.Z 的文件
gzip, zcat
gzip 可以解开 compress, zip 与 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.configman.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压缩比较佳 |
在默认的状态下原本的文件会被压缩成为 .gz 的档名, 原始文件就不再存在了。使用 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 的选项。
cat 可以读取纯文字档,那个 zcat 则可以读取纯文字档被压缩后的压缩档! 由於 gzip 这个压缩命令主要想要用来取代 compress 的,所以不但 compress 的压缩文件可以使用 gzip 来解开,同时 zcat 这个命令可以同时读取 compress 与 gzip 的压缩档!
bzip2, bzcat
gzip 是为了取代 compress 并提供更好的压缩比而开发的,那么 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 这个命令可以读取内容
第九章、文件与文件系统的压缩与打包 Linux 系统常见的压缩命令