压缩与解压缩

Posted 执剑长老

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了压缩与解压缩相关的知识,希望对你有一定的参考价值。

1、指令

 

tar

只是打包动作,相当于归档处理,不做压缩;解压也一样,只是把归档文件释放出来。

打包(不是压缩):

tar -cvf examples.tar files|dir
#说明:
-c, --create  create a new archive 创建一个归档文件
-v, --verbose verbosely list files processed 显示创建归档文件的进程
-f, --file=ARCHIVE use archive file or device ARCHIVE  后面要立刻接被处理的档案名,比如--file=examples.tar

#举例:
tar -cvf file.tar file1       #file1文件
tar -cvf file.tar file1 file2 #file1,file2文件
tar -cvf file.tar dir         #dir目录

解包:

tar -xvf examples.tar (解压至当前目录下)
tar -xvf examples.tar  -C /path (/path 解压至其它路径)

#说明:
-x, --extract, extract files from an archive 从一个归档文件中提取文件

#举例:
tar -xvf file.tar
tar -xvf file.tar -C /temp  #解压到temp目录下

 

tar.gz tgz

tar.gz和tgz只是两种不同的书写方式,后者是一种简化书写,等同处理。

这种格式是Linux下使用非常普遍的一种压缩方式,兼顾了压缩时间(耗费CPU)和压缩空间(压缩比率),其实这是对tar包进行gzip算法的压缩。

压缩:

tar -zcvf examples.tgz examples (examples当前执行路径下的目录)

说明:
-z, --gzip filter the archive through gzip 通过gzip压缩的形式对文件进行归档

举例:
tar -zcvf file.tgz dir #dir目录

解压缩:

tar -zxvf examples.tar (解压至当前执行目录下)
tar -zxvf examples.tar  -C /path (/path 解压至其它路径)

举例:
tar -zxvf file.tgz
tar -zxvf file.tgz -C /temp

 

tar.bz

Linux下压缩比率较tgz大,即压缩后占用更小的空间,使得压缩包看起来更小。
但同时在压缩,解压的过程却是非常耗费CPU时间。

压缩:

tar -jcvf examples.tar.bz2 examples   (examples为当前执行路径下的目录)

说明:
-j, --bzip2 filter the archive through bzip2 通过bzip2压缩的形式对文件进行归档

举例:
tar -jcvf file.tar.bz2 dir #dir目录

解压缩:

tar -jxvf examples.tar.bz2 (解压至当前执行目录下)
tar -jxvf examples.tar.bz2  -C /path (/path 解压至其它路径)

举例:
tar -jxvf file.tar.bz2
tar -jxvf file.tar.bz2 -C /temp

 

gzip

压缩:

gzip -d examples.gz examples

解压缩:

gunzip examples.gz

 

zip

zip 格式是开放且免费的,所以广泛使用在 Windows、Linux、MacOS 平台,要说 zip 有什么缺点的话,就是它的压缩率并不是很高,不如 rar及 tar.gz 等格式。

压缩:

zip -r examples.zip examples (examples为目录)

解压缩:

zip examples.zip

 

rar

 

压缩:

rar -a examples.rar examples

解压缩:

rar -x examples.rar

 

对比

压缩比率=原内容大小/压缩后大小,压缩比率越大,则表明压缩后占用空间的压缩包越小。

综合起来,在压缩比率上: tar.bz2 > tgz > tar
占用空间与压缩比率成反比: tar.bz2 < tgz < tar
耗费时间(打包,解压)
打包:tar.bz2 > tgz > tar
解压: tar.bz2 > tar > tgz
从效率角度来说,当然是耗费时间越短越好

因此,Linux下对于占用空间与耗费时间的折衷多选用tgz格式,不仅压缩率较高,而且打包、解压的时间都较为快速,是较为理想的选择。

结论:

再一次印证了物理空间与时间的矛盾(想占用更小的空间,得到高压缩比率,肯定要牺牲较长的时间;反之,如果时间较为宝贵,要求快速,那么所得的压缩比率一定较小,当然会占用更大的空间了)。

 

以上是关于压缩与解压缩的主要内容,如果未能解决你的问题,请参考以下文章

Huffman的应用之文件压缩与解压缩

Huffman的应用之文件压缩与解压缩

免费毕设JAVA文件压缩与解压缩实践(源代码+论文)

毕业设计JAVA文件压缩与解压缩实践(源代码+论文)

Java实现压缩文件与解压缩文件

压缩与解压缩