第九章、文件与文件系统的压缩与打包
最近升级日期:2009/08/20

大标题的图示压缩文件的用途与技术

你是否有过文件文件太大,导致无法以一片软盘将他复制完成的困扰? 又,你是否有过,发现一个软件里面有好多文件,这些文件要将他复制与携带都很不方便的问题? 还有,你是否有过要备份某些重要数据,偏偏这些数据量太大了,耗掉了你很多的磁碟空间呢? 这个时候,那个好用的『文件压缩』技术可就派的上用场了!

因为这些比较大型的文件透过所谓的文件压缩技术之后,可以将他的磁碟使用量降低, 可以达到减低文件容量的效果,此外,有的压缩程序还可以进行容量限制, 使一个大型文件可以分割成为数个小型文件,以方便软盘片携带呢!

那么什么是『文件压缩』呢?我们来稍微谈一谈他的原理好了。目前我们使用的计算机系统中都是使用所谓的 bytes 单位来计量的!不过,事实上,计算机最小的计量单位应该是 bits 才对啊,此外,我们也知道 1 byte = 8 bits 。但是如果今天我们只是记忆一个数字,亦即是 1 这个数字呢?他会如何记录?假设一个 byte 可以看成底下的模样:

□□□□□□□□
Tips:
由於 1 byte = 8 bits ,所以每个 byte 当中会有 8 个空格,而每个空格可以是 0, 1 ,这里仅是做为一个约略的介绍, 更多的详细数据请参考第零章的计算机概论吧!
鸟哥的图示

由於我们记录数字是 1 ,考虑计算机所谓的二进位喔,如此一来, 1 会在最右边占据 1 个 bit ,而其他的 7 个 bits 将会自动的被填上 0 罗!你看看,其实在这样的例子中,那 7 个 bits 应该是『空的』才对!不过,为了要满足目前我们的操作系统数据的存取,所以就会将该数据转为 byte 的型态来记录了!而一些聪明的计算机工程师就利用一些复杂的计算方式, 将这些没有使用到的空间『丢』出来,以让文件占用的空间变小!这就是压缩的技术啦!

另外一种压缩技术也很有趣,他是将重复的数据进行统计记录的。举例来说,如果你的数据为『111....』共有100个1时, 那么压缩技术会记录为『100个1』而不是真的有100个1的位存在!这样也能够精简文件记录的容量呢! 非常有趣吧!

简单的说,你可以将他想成,其实文件里面有相当多的『空间』存在,并不是完全填满的, 而『压缩』的技术就是将这些『空间』填满,以让整个文件占用的容量下降! 不过,这些『压缩过的文件』并无法直接被我们的操作系统所使用的,因此, 若要使用这些被压缩过的文件数据,则必须将他『还原』回来未压缩前的模样, 那就是所谓的『解压缩』罗!而至於压缩前与压缩后的文件所占用的磁碟空间大小, 就可以被称为是『压缩比』罗!更多的技术文件或许你可以参考一下:

这个『压缩』与『解压缩』的动作有什么好处呢?最大的好处就是压缩过的文件容量变小了, 所以你的硬盘容量无形之中就可以容纳更多的数据。此外,在一些网络数据的传输中,也会由於数据量的降低, 好让网络频宽可以用来作更多的工作!而不是老是卡在一些大型的文件传输上面呢!目前很多的 WWW 网站也是利用文件压缩的技术来进行数据的传送,好让网站频宽的可利用率上升喔!

Tips:
上述的WWW网站压缩技术蛮有趣的!他让你网站上面『看的到的数据』在经过网络传输时,使用的是『压缩过的数据』, 等到这些压缩过的数据到达你的计算机主机时,再进行解压缩,由於目前的计算机运算速度相当的快速, 因此其实在网页浏览的时候,时间都是花在『数据的传输』上面,而不是 CPU 的运算啦!如此一来,由於压缩过的数据量降低了,自然传送的速度就会增快不少!
鸟哥的图示

若你是一位软件工程师,那么相信你也会喜欢将你自己的软件压缩之后提供大家下载来使用, 毕竟没有人喜欢自己的网站天天都是频宽满载的吧?举个例子来说, Linux 2.6.27.4 完整的核心大小约有 300 MB 左右,而由於核心主要多是 ASCII code 的纯文字型态文件,这种文件的『多余空间』最多了。而一个提供下载的压缩过的 2.6.27.4 核心大约仅有 60MB 左右,差了几倍呢?你可以自己算一算喔!


 
     
http://linux.vbird.org is designed by VBird during 2001-2011. ksu.edu 

本网页主要以Firefox配合解析度 1024x768 作为设计依据     鸟哥自由软件整合应用研究室