壓縮與解壓
從 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 |