压缩与解压
出自Linux Wiki
本文介绍Linux环境中处理rar、zip、gz、bz2、tar等常见压缩/归档文件的方法。如果你只是想了解解压所用的命令,请直接参考文末的总结表。
如果你使用图形界面,可考虑GNOME的file-roller或KDE的Ark,配合下述提到的软件包使用。
目录 |
7z
7-Zip 是“一款拥有极高压缩比的开源压缩软件”[1],它也可以处理 zip 等常见压缩格式。
# 解压文件,保留子文件夹结构 7z x 文件名 # 解压文件,但不创建任何子文件夹 7z e 文件名
使用 7z 和 convmv 可以解决 zip 文件的中文乱码问题,见 中文文件名乱码问题#处理zip文件乱码
rar
在Linux中可方便处理rar文件。如果只是解压,可安装unrar。unrar是RARLAB公开了源码的工具[2]:
# 解压rar文件,保留子文件夹结构 unrar x rar文件名 # 解压rar文件,但不创建任何子文件夹 unrar e rar文件名 # 查看帮助 unrar h
如果需要制作rar文件,可以安装rar软件包并购买相应许可。rar也具备unrar功能,用法同上,只需把unrar换成rar即可。
zip
info-zip提供了自由的zip文件处理方案,一般可以从系统中安装zip或unzip:
unzip zip文件名
值得一提的是,如果zip中包括非UTF-8编码的中文文件名文件,解压结果中会出现乱码,解决该乱码问题请参考文件名编码转换。
同样由于潜在的文件名编码问题,不建议在Linux中打zip包供Windows用户使用。
tar
tar实际上是个打包工具,将一些文件存放在一个单独的文件中,并不做压缩。[3]而真正的压缩是其与gzip或bzip2等工具配合完成的,故常见的后缀名为.tar.gz, .tar.bz2,解压方法:
tar xvf sample.tar tar xvfz sample.tar.gz tar xvfj sample.tar.bz2
几个参数中,x表示解压,v表示显示详细信息(可选),f表示从文件输入,z表示文件是经gzip压缩的,j表示文件是经bz2压缩的。
如需在Linux中创建压缩文件,推荐使用自由的tar与gzip组合,生成的文件同样兼容Windows中的常见压缩软件。例:
# 把MY_DIRS、MY_FILES打包并压缩成TARFILE.tar.gz文件 tar cvfz TARFILE.tar.gz MY_DIRS MY_FILES
bzip2
bzip2的压缩效果通常不错,但速度要慢一些[4],后缀为bz2。
# 压缩并删除文件"sample",生成"sample.gz2" bzip2 sample # 解压并删除bz2文件: bunzip2 sample.bz2 # 解压但保留bz2文件: bunzip2 -k sample.bz2 # 解压并输出bz2文件到屏幕: bzcat sample.bz2
gzip
gzip是Linux下常见的压缩格式,它的压缩速度相对bzip2而言要快一些。解压gzip文件:
# 压缩并删除文件"sample",生成"sample.gz" gzip sample # 解压并删除gz文件: gunzip sample.gz # 解压并输出gz文件到屏幕: zcat sample.gz
总结表
文件后缀 | 解压命令 | 压缩命令 |
---|---|---|
.zip (需要zip) |
unzip File.zip |
zip File.zip DirName |
.rar (需要rar) |
rar x File.rar |
rar a File.rar |
.tar (打包,不是压缩) |
tar xvf File.tar |
tar cvf File.tar DirName |
.tar.gz, .tgz |
tar zxvf File.tar.gz |
tar zcvf File.tar.gz DirName |
.tar.bz2, .tar.bz |
tar jxvf File.tar.bz2 |
tar jcvf File.tar.bz2 Dir |
.tar.Z |
tar Zxvf File.tar.Z |
tar Zcvf File.tar.Z DirName |
.gz |
gunzip File.gz |
gzip File |
.Z |
uncompress File.Z |
compress File |
.bz2 (需要bzip2) |
bunzip2 File.bz |
bzip2 File |