贝灵顿梗犬多少钱:文件压缩-整理

来源:百度文库 编辑:九乡新闻网 时间:2024/07/07 11:49:42
我用过很多压缩程序,从以前 DOS 时代的 pkzip,lha,arj,rar,ain 到现在的 winzip,gzip,bzip2。就现在 Linux 用户最常用到的三种压缩格式 tar.gz,tar.bz2,zip 而言,似乎是 tar.bz2 压缩率最大,tar.gz 次之,zip 压缩率最小。几乎每次都是这样,某些网站往往提供几种格式的压缩包供下载,zip 格式的最大,tar.gz 小很多,tar.bz2 则更小。

那位朋友能从理论上分析一下这几种压缩格式并比较一下其优劣?有没有更好的,压缩率更大的压缩格式呢?

--dlee
有人说一个人有烦恼是因为记性太好。那年开始,我忘记了很多事情,唯一有印象的,就是我喜欢桃花。



   
Re: 几种压缩格式,那种压缩率最大?

hehe,走错了,还以为是说媒体的压缩格式呢,那我倒知道一点,这个么,只会用,没研究,猜测其应该都是无损压缩,其算法再精,怕也达不到现在 video,audio的几十比一的压缩比吧。希望哪一天哪位高人再发明类同于fourier变换这样的奇妙等式,这样就可以把.tar.bz2远远的丢在后面。
不知道国内研究mpeg2,mpeg4的多媒体专家多不多,也做出个象样的播放器来为国家做点贡献吧!好象国内还没有mpeg4软解压的播放器?linux下的divx也还不过一点皮么而已。只不知专业的dvd公司有没有,什么jieba当然连边都沾不上,至少要有菜单功能!


我迷路了,my god! who can help me?

   
Re: 几种压缩格式,那种压缩率最大?

Mpeg系列是有损压缩,而ZIP之类是无损压缩.




   
Re: 几种压缩格式,那种压缩率最大?

tar只是打包算不上什么压缩,gzip,bzip2才是真正的压缩,tar后再压缩就类同于rar里的solid方式压缩(打包),所以对文件不大但数量众多的压缩提高压缩比率有极大的帮助



   
Re: 几种压缩格式,那种压缩率最大?

modern archiving/compression softwares like zip, lha, arj,rar .... all uses a compression method called LZ77 with Huffman coding. just bit different in some chosen strategies. the UNIX older compression tool compress (.Z file) uses LZW.

Both LZ77 and LZW is asymtrically optimal, which means it will reach the compression limit when inifte source data being processed, however, it is not feasible due to the physicall time/space limit. LZ77 and LZW are developed during the late 1970s, and they are quite traditional compression schemes for text.

The best known compression scheme uses multi-order PPM with arithmetic coding, which is NOT fast enough to be used in archiving tools. but during 1992 Burrier and Wheeler invented a new block sorting algorithm called BWT, which can transform the data into a very compressive format, and then compress it using traditional coders. bzip2 uses BWT (and that's why it is called (b)zip2). Last several new second step coders were designed for BWT which work MUCH better than bzip2, but unformately, these cutting edge tech are still in labs, not avaiable as a portable archiving format on internet.   
多谢!怪不得你叫 compress。

看来目前还是 bzip2 更牛些,为了节省别人的下载时间,建议大家多使用 bzip2。

整理下Linux下创建与解压zip、tar、tar.gz和tar.bz2文件及他们之间压缩率对比,在自己的脑袋内存空间有限又不经常使用的时候以便于备忘。现整理如下:

目前Linux下常见的压缩文件扩展名:

 *.Z        compress程序压缩的文件(最早期使用),压缩后取代源文件;
 *.zip      一个夸平台的文件打包程序,适用于Linux、windows和Mac OS系统;
 *.bz2      bzip2程序压缩的文件;
 *.gz       gzip程序压缩的文件;
 *.tar      tar程序打包的文件,并没有压缩;
 *.tar.gz   tar程序打包的文件,并经过gzip程序的压缩;
 *.tar.bz2  tar程序打包的文件,并经过bzip2程序压缩。

Tips:所谓扩展名只是大家约定的通用格式,是为了更方便的能一眼识别出是什么压缩类型,当然你可以打包或压缩为任意格式的后缀名,只要你愿意。

A)*.zip格式是大家最常见的一种,它具有夸操作系统平台性,可以同时在windows、Linux和Mac Os上使用。

大家可以用zip格式压缩那些需要共享给windows用户的文件。压缩与解压.ZIP格式的文件:

[Lee@leedd.Com tmp]$ zip -r test.zip tmp
adding: test/ (stored 0%)
adding: test/data-file (deflated 24%)
adding: test/r (deflated 51%)

下面是如果解压一个zip文档:

[Lee@leedd.Com tmp]$ rm -rf test     #为测试解压,先删除当前目录下的tmp文件
[Lee@leedd.Com tmp]$ unzip  test.zip
Archive:  test.zip
  creating: test/
 inflating: test/data-file
 inflating: test/r

B) 压缩与解压*.tar*、.tar.gz、*.tar.bz2 格式的文件及对比:
Tar是在Linux中使用得非常广泛的文档打包格式。它的好处就是它只消耗非常少的CPU以及时间去打包文件,他仅仅只是一个打包工具,并不负责压缩,压缩是由gzip与bzip2来实现的。因此把*.tar*、.tar.gz、*.tar.bz2 放到一起来举例:

比如我们要把目录/var/tmp下的test目录打包压缩到当前目录

[Lee@leedd tmp]$ tar -cvf   test.tar   test                ### 仅打包,不压缩
[Lee@leedd tmp]$ tar -zcvf  test.tar.gz    test        ### 打包后以gzip压缩
[Lee@leedd tmp]$ tar -jcvf  test.tar.bz2   test        ### 打包后以bzip2压缩
[Lee@leedd tmp]$ ll     test.tar*                        ### 对比压缩后文件大小
-rw-r--r-- 1 Lee mock 10240 01-18 17:05 test.tar
-rw-r--r-- 1 Lee mock   357 01-18 17:06 test.tar.bz2
-rw-r--r-- 1 Lee mock   327 01-18 17:05 test.tar.gz

如何解压缩包:

[Lee@leedd tmp]$ tar -xvf   test.tar
[Lee@leedd tmp]$ tar -xvf   test.tar.gz
[Lee@leedd tmp]$ tar  -jxvf  test.tar.bz2

上面测试中,每次要删除解压后的test文件后解压打其他目录,因为如果不定义解压后目录路径和名字则默认解压到当前目录并以把压缩包名称作为文件夹名字。如果要解压到其他目录(如:/var/tmp/find)则如下:

[Lee@leedd tmp]$ tar  -jxvf  test.tar.bz2  -C  /var/tmp/find

关于tar.gz和tar.bz2压缩率的问题:

*.tar.gz 在压缩时不会占用太多CPU的,而且可以得到一个非常理想的压缩率。也会被简写成tgz。

*.tar.bz2网上好的资料说这种压缩格式是压缩率最好的、它比前面的方式要占用更多的CPU与时间。但是经过上面的试验显示发现test.tar.gz的大小竟然比test.tar.bz2的更小(这是否意味者*.tar.gz拥有更小的压缩率? 至少这次实验是这样)