如何在虚拟空间上做多个网站,做营销网站建设挣钱吗,做网站还需要续费,曲周县建设局网站1.压缩文件的用途与技术
你是否有过文件太大#xff0c;导致无法以正常的E-mail方式发送#xff1f;又或学校、厂商要求使用CD或DVD来做数据归档之用#xff0c;但是你的单一文件却都比这些传统的一次性存储媒介还要大#xff0c;那怎么分成多块来刻录#xff1f;还有导致无法以正常的E-mail方式发送又或学校、厂商要求使用CD或DVD来做数据归档之用但是你的单一文件却都比这些传统的一次性存储媒介还要大那怎么分成多块来刻录还有你是否有过要备份某些重要数据偏偏这些数据量太大使用了你很多的磁盘空间
这个时候这个好用的文件压缩技术可就派的上用场了。 这些比较大型的文件通过所谓的文件压缩技术之后可以将它的磁盘使用量降低从而达到降低文件容量的效果。此外有的压缩程序还可以进行容量限制使一个大型文件可以划分成为数个小型文件以方便携带。 那么什么是文件压缩呢 我们来稍微谈一谈它的原理目前我们使用的计算机系统中都是使用所谓的字节单位来计量。不过事实上计算机最小的计量单位应该是bit才对此外我们也知道1Byte8bit但是如果今天我们只是记忆一个数字即1这个数字它会如何记录 假设一个字节可以看成八个空格由于1B8bit所以每个字节当中会有8个空格而每个空格可以是0、1由于我们记录数字是1考虑计算机所谓的二进制如此一来1会在最右边占据1个位而其他的7个位将会自动地被填上0。 你看看其实在这样的例子中那7个位应该是空的才对。不过为了要满足目前我们的操作系统数据的读写所以就会将该数据转为字节的形式来记录。 而一些聪明的计算机工程师就利用一些复杂的计算方式将这些没有使用到的空间【丢】出来以让文件占用的空间变小这就是压缩的技术。 另外一种压缩技术也很有趣它是将重复的数据进行统计记录。举例来说如果你的数据为【111……】共有100个1时那么压缩技术会记录为【100个1】而不是真的有100个1的位存在。这样也能够精简文件记录的容量非常有趣吧 简单地说你可以将它想成其实文件里面有相当多的空间存在并不是完全填满的而压缩的技术就是将这些空间填满以让整个文件占用的容量下降。 不过这些压缩过的文件并无法直接被我们的操作系统所使用因此若要使用这些被压缩过的文件数据则必须将它还原回来未压缩前的模样那就是所谓的解压缩。 而至于压缩后与压缩的文件所占用的磁盘空间大小就可以被称为是压缩比 这个压缩与解压缩的操作有什么好处呢 最大的好处就是压缩过的文件容量变小了所以你的硬盘容量无形之中就可以容纳更多的数据。 此外在一些网络数据的传输中也会由于数据量的降低好让网络带宽可以用来做更多的工作而不是老卡在一些大型的文件传输上面目前很多的WWW网站也是利用文件压缩的技术来进行数据的传送好让网站带宽的利用率上升。 上述的WWW网站压缩技术蛮有趣的它让你网站上面看得到的数据在经过网络传输时使用的是压缩过的数据等到这些压缩过的数据到达你的计算机主机时再进行解压缩由于目前的计算机命令周期相当快速因此其实在网页浏览的时候时间都是花在数据的传输上面而不是CPU的运算如此一来由于压缩过的数据量降低了自然传输的速度就会变快不少。 若你是一位软件工程师那么相信你也会喜欢将你自己的软件压缩之后提供大家下载来使用毕竟没有人喜欢自己的网站天天都是带宽满载的吧
举个例子来说Linux 3.10.81CentOS7用的扩展版本完整的内核大小约有570MB左右而由于内核主要多是 ASCII的纯文本文件这种文件的多余空间最多而一个提供下载的压缩的3.10.81内核大约仅有76MB左右差了多少你可以自己算一算。
2. Linux 系统常见的压缩命令 在Linux的环境中压缩文件的扩展名大多是“.tar、*tar.gz、*tgz、“.gz、“Z、“.b22、“xz。 为什么会有这样的扩展名不是说Linux的扩展名没有什么作用吗 这是因为Linux支持的压缩命令非常多且不同的命令所用的压缩技术并不相同当然彼此之间可能就无法互通压缩/解压缩文件。
所以当你下载到某个压缩文件时自然就需要知道该文件是由哪种压缩命令所制作出来的好用来对照着解压缩也就是说虽然 Linux文件的属性基本上是与文件名没有绝对关系的但是为了帮助我们人类小小的脑袋所以适当的扩展名还是必要的
下面我们就列出几个常见的压缩文件扩展名
.Zcompress 程序压缩的文件.zipzip程序压缩的文件.gzgzip程序压缩的文件.bz2bzip2程序压缩的文件.xzxz程序压缩的文件.tartar 程序打包的文件并没有压缩过;.tar.gztar程序打包的文件并且经过gzip的压缩.tar.bz2tar 程序打包的文件并且经过bzip2的压缩.tar.xztar程序打包的文件并且经过xz的压缩;
Linux上常见的压缩命令就是gzip、bzip2以及最新的xz至于compress已经不流行了。
为了支持Windows常见的zip其实Linux也早就有zip命令了。
gzip是由GNU计划所开发出来的压缩命令该命令已经替换了compress。
后来GNU又开发出bzip2及xz这几个压缩比更好的压缩命令。
不过这些命令通常仅能针对一个文件来压缩与解压缩如此一来每次压缩与解压缩都要一大堆文件岂不烦人此时这个所谓的【打包软件tar】就显得很重要。 这个tar可以将很多文件打包成为一个文件甚至是目录也可以这么玩。不过单纯的tar功能仅是打包而已即将很多文件结合为一个文件事实上它并没有提供压缩的功能后来GNU计划中将整个tar与压缩的功能结合在一起如此一来提供用户更方便并且更强大的压缩与打包功能下面我们就来谈一谈这些在Linux下面基本的压缩命令。
2.1 gzip, zcat/zmore/zless/zgrep
gzip可以说是应用最广的压缩命令了目前gzip可以解开compress、zip与gzip等软件所压缩的文件至于gzip所建立的压缩文件为.gz
让我们来看看这个命令的语法
[dmtsaistudy~JS gzip [-cdtv#]文件名
[dmtsaistudy-]S zcat 文件名.gz
选项与参数
-c将压缩的数据输出到屏幕上可通过数据流重定向来处理;-d解压缩的参数;-t可以用来检验一个压缩文件的一致性看看文件有无错误;-v可以显示出原文件/压缩文件的压缩比等信息;-##为数字的意思代表压缩等级-1最快但是压缩比最差-9最慢但是压缩比最好默认是-6;
范例一找出/etc 下面不含子目录容量最大的文件并将它复制到/tmp然后以gzip压缩。 当你使用gzip进行压缩时在默认的状态下原本的文件会被压缩成为.gz后缀的文件源文件就不再存在了这点与一般习惯使用Windows做压缩的朋友所熟悉的情况不同要注意。 此外使用gzip压缩的文件在Windows系统中竟然可以被WinRAR或7zip这些软件解压缩很好用其他的用法如下 范例二由于services是文本文件请将范例一的压缩文件的内容读出来。由于services 这个原本的文件是是文本文件因此我们可以尝试使用zcat/zmore/zless去读取。 此时屏幕上会显示servcies.gz解压缩之后的原始文件内容。 范例三将范例一的文件解压缩。 不要使用gunzip这个命令不好背使用gzip-d来进行解压缩.与gzip相反gzip-d会将原本的.gz删除恢复到原本的services文件。 范例四将范例三解开的services用最佳的压缩比压缩并保留原本的文件。 范例五由范例四再次建立的services.gz中找出http这个关键词在哪几行 其实gzip的压缩已经优化过了所以虽然gzip提供1~9的压缩等级不过使用默认的6就非常好用了。因此上述的范例四可以不要加入那个-9的选项。 范例四的重点在那个-c与的使用-c可以将原本要转成压缩文件的数据内容将它变成文字类型从屏幕输出然后我们可以通过大于这个符号将原本应该由屏幕输出的数据转成输出到文件而不是屏幕所以就能够建立出压缩文件了。只是文件名也要自己写当然最好还是遵循gzip的压缩文件名要求较佳。 cat/more/less可以使用不同的方式来读取纯文本文件那个 zcat/zmore/zless则可以对应于cat/more/less 的方式来读取纯文本文件被压缩后的压缩文件 由于gzip这个压缩命令主要想要用来替换compress所以不但compress的压缩文件可以使用gzip来解开同时zcat这个命令可以同时读取compress与gzip的压缩文件。 另外如果你还想要从文字压缩文件当中找数据的话可以通过egrep来查找关键词而不需要将压缩文件解开才以grep进行这对查询备份中的文本文件数据相当有用。 时至今日应该也没有人使用compress这个老的命令。而如果你还有备份数据使用的是compress创建出来的Z文件那也无须担心使用znew 可以将该文件转成 gzip的格式.
2.2 bzip2bzcat/bzmore/bzless/bzgrep
若说gzip 是为了替换compress并提供更好的压缩比而成立的那么bzip2则是为了替换gzip并提供更佳的压缩比而来。
bzip2真是很不错的东西这玩意的压缩比竟然比gzip 还要好至于bzip2的用法几乎与gzip 相同看看下面的用法吧
[dmtsaistudy ~]$ bzip2 [-cdkzv#]文件名
[dmtsaistudy ~]$ bzcat 文件名.bz2
选项与参数:
-c将压缩的过程产生的数据输出到屏幕上;-d解压缩的参数;-d保留原始文件而不会删除原始的文件-k压缩的参数默认值可以不加);-v可以显示出源文件/压缩文件的压缩比等信息:-#与gzip 同样的都是计算压缩比的参数-9最佳-1 最快:
例一、将刚刚gzip 范例留下来的/tmp/services以bzip2压缩。 此时services 会变成 services.bz2之外你也可以发现bzip2的压缩比要软gzip好。 压缩率由gzip的79%提升到bzip2的81%。
同样它会把源文件删除 范例二将范例一的文件内容读出来。 范例三将范例一的文件解压缩。
范例四将范例三解开的services用最佳的压缩比压缩并保留原本的文件。
看上面的范例你会发现到bzip2连选项与参数都跟gzip一模一样只是扩展名由.gz变成.bz2而已。其他的用法都大同小异所以就不一一介绍了
你也可以发现到bzip2的压缩率确实比gzip要好些不过对于大容量文件来说bzip2压缩时间会花比较久至少比gzip要久的多这没办法要有更多可用容量就要花费相对应的时间。
2.3 xz, xzcat/xzmore/xzless/xzgrep
虽然bzip2已经具有很棒的压缩比不过显然某些自由软件开发者还不满足因此后来还推出了xz这个压缩比更高的软件。 这个软件的用法也跟gzip/bzip2几乎一模一样那我们就来看一看。
xz [-dtlkc#] 文件名
xcat 文件名.xz
选项与参数
-d就是解压缩-t测试压缩文件的完整性看有没有错误;-l列出压缩文件的相关信息-k保留原本的文件不删除-c同样的就是将数据在屏幕上输出的意思;-#同样的也有较佳的压缩比的意思;
范例一将刚刚由bzip2所遗留下来的/tmp/services通过x2来压缩。
#各位观众看到没有容量又进一步下降的更多好棒的压缩比。
范例二列出这个压缩文件的信息然后读出这个压缩文件的内容。
竟然可以列出这个文件的压缩前后的容量真是太人性化了这样观察就方便多了
同样的我们可以使用xzcat来预览压缩包里的东西 范例三将它解压缩吧
范例四保留原文件的文件名并且建立压缩文件。 xz 这个压缩比真的好太多太多了鸟哥选择的这个services文件为范例它可以将gzip压缩比压缩后/压缩前的21%更进一步优化到15%差非常非常多。
不过xz最大的问题是时间花太久了。
如果你曾经使用过xz的话应该会发现它的运算时间真的比gzip久很多。
通过【time [gziplbzip2lxz]-cservicesservices.[gzlbz2|xz]】去执行运算结果发现这三个命令的运行时间依序是0.019s、0.042s、0.261s。
看最后一个数字差了10倍的时间。
所以如果你并不觉得时间是你的成本考虑那么使用xz会比较好。如果时间是你的重要成本那么gzip恐怕是比较适合的压缩软件。