Linux bzip2/gzip/zip/tar 命令详解
Changelog
| 1.0 | 2018-3-24 | 添加了關(guān)于xz的內(nèi)容 |
Linux文件壓縮工具
| bzip2 | .bz2 | 采用 Burrows-Wheeler 塊排序文本壓縮算法和霍夫曼編碼 |
| gzip | .gz | GNU壓縮工具,用 Lempel-Ziv-Welch 編碼 |
| zip | .zip | Windows上 PKZIP 工具的 Unix 實(shí)現(xiàn) |
| xz | .xz | 使用 LZMA/LZMA2 壓縮算法 |
bzip2工具
壓縮文件
格式:
bzip2 文件名(不能是目錄)舉例:
bzip2 pic.tar這時(shí)候,你會(huì)發(fā)現(xiàn)原始文件pic.tar不見(jiàn)了,被替換成了pic.tar.bz2;
如果bzip2后面跟多個(gè)文件(比如 命令bzip2 1.txt 2.txt 3.txt),那么不會(huì)打包壓縮,而是把每個(gè)文件分別壓縮,*.txt會(huì)變成*.txt.bz2,不建議這樣使用。
如果要保留原始文件,可以加-k選項(xiàng)。
解壓縮
格式:
bunzip2 xxx.bz2或者
bzip2 -d xxx.bz2舉例:
bunzip2 pic.tar.bz2這時(shí)候,你會(huì)發(fā)現(xiàn)原始文件pic.tar.bz2不見(jiàn)了,被替換成了pic.tar
如果要保留原始文件,可以加-k選項(xiàng)。
gzip工具
和bzip2用法基本相同。
壓縮文件
gzip 文件名(不能是目錄)這時(shí)候,你會(huì)發(fā)現(xiàn)原始文件xxx不見(jiàn)了,被替換成了xxx.gz;
如果gzip后面跟多個(gè)文件,那么會(huì)把每個(gè)文件分別壓縮,不建議這樣使用。
如果要保留原始文件,可以加-k選項(xiàng)。
解壓縮
gunzip xxx.gz或者
gzip -d xxx.gz如果要保留原始文件,可以加-k選項(xiàng)。
zip工具
與上面兩個(gè)工具不同的是,zip工具可以處理目錄。
壓縮
zip命令常用選項(xiàng)如下:
| -r | 遞歸處理,將指定目錄下的所有文件和子目錄一并處理。 |
| -m | 將文件壓縮后刪除原始文件,即把文件移到壓縮文件中。 |
| -u | 更換較新的文件到壓縮文件內(nèi)。 |
| -v | 顯示指令的執(zhí)行過(guò)程或版本信息。 |
解壓縮
unzip命令常用選項(xiàng)如下:
| -l | 顯示壓縮文件內(nèi)所包含的文件(僅顯示,并不解壓)。 |
| -v | 顯示指令的執(zhí)行過(guò)程或版本信息。 |
| -t | 檢查壓縮文件是否正確。 |
| -j | 不處理壓縮文件中原有的目錄路徑。 |
| -d <目錄> | 解壓文件到指定目錄。 |
舉例
- 我想把一個(gè)文件abc.txt和一個(gè)目錄dir壓縮成為aaa.zip:
- 我下載了一個(gè)aaa.zip文件,想解壓:
- 我有一個(gè)很大的壓縮文件large.zip,我不想解壓縮,只想看看它里面有什么:
或
unzip -v large.zip- 我下載了一個(gè)壓縮文件large.zip,想驗(yàn)證一下這個(gè)壓縮文件是否完整:
- 我用-l選項(xiàng)發(fā)現(xiàn)music.zip文件里面有很多目錄和子目錄,并且子目錄中全是.mp3文件。我想把這些文件都解壓到當(dāng)前目錄下,而不創(chuàng)建原有目錄結(jié)構(gòu)。
- 我想把a(bǔ)aa.zip解壓到指定目錄/a/b/c/下面(目錄c可以有也可以沒(méi)有,如果沒(méi)有會(huì)自動(dòng)創(chuàng)建,但是/a/b/必須要有)
xz工具
根據(jù)維基百科的解釋, xz 是一個(gè)使用 LZMA 壓縮算法的無(wú)損數(shù)據(jù)壓縮文件格式。和gzip與bzip2一樣,同樣支持多文件壓縮,但是約定不能將多于一個(gè)的目標(biāo)文件壓縮進(jìn)同一個(gè)檔案文件。
壓縮
xz 文件名(不能是目錄)這時(shí)候,你會(huì)發(fā)現(xiàn)原始文件xxx不見(jiàn)了,被替換成了xxx.xz;
如果xz后面跟多個(gè)文件,那么會(huì)把每個(gè)文件分別壓縮,不建議這樣使用。
如果要保留原始文件,可以加-k選項(xiàng)。
解壓縮
xz -d xxx.xz如果要保留原始文件,可以加-k選項(xiàng)。
tar命令
tar命令是用來(lái)歸檔(把多個(gè)文件歸檔成一個(gè)文件)與提取的,本質(zhì)上沒(méi)有壓縮與解壓縮的功能。
命令格式
tar function [options] obj1 obj2 ...function 參數(shù)定義了tar命令的功能,必須有一個(gè)。常用的參數(shù)如下表:
| -c | 創(chuàng)建一個(gè)新的歸檔文件 |
| -x | 從已有歸檔文件中提取文件 |
| -t | 列出已有歸檔文件的內(nèi)容 |
| -r | 追加文件到已有歸檔文件末尾 |
除了指定一個(gè)功能外,還可以指定一個(gè)或多個(gè)選項(xiàng)。常用的選項(xiàng)如下表:
| -f file | 在f后要立即接歸檔文件名(必須要這個(gè)參數(shù)) |
| -v | 在處理時(shí)顯示文件 |
| -C dir | 切換到指定目錄 |
| -j | 將輸出重定向給bzip2命令來(lái)壓縮或解壓,此時(shí)檔案名最好為*.tar.bz2 |
| -z | 將輸出重定向給gzip命令來(lái)壓縮或解壓,此時(shí)檔案名最好為*.tar.gz |
把目錄或文件歸檔
舉例:
用tree命令查看當(dāng)前目錄結(jié)構(gòu)如下。
.
├── pic1
│ ├── Chrysanthemum.jpg
│ ├── Desert.jpg
│ ├── Hydrangeas.jpg
│ └── Jellyfish.jpg
└── pic2
├── Koala.jpg
├── Lighthouse.jpg
├── Penguins.jpg
└── Tulips.jpg
上面的命令把目錄pic1和目錄pic2的內(nèi)容歸檔到文件pic.tar中。
這時(shí)候在WIN7下查看如下圖:
注意,這里的pic.tar只是歸檔文件,并沒(méi)有壓縮,其大小約等于目錄pic1之大小加上目錄pic2之大小。
上述結(jié)果也可以用命令
tar -cf pic.tar *把當(dāng)前目錄下所有內(nèi)容歸檔到pic.tar
僅列出檔案內(nèi)容
如果只想列出歸檔文件pic.tar的內(nèi)容,并不提取文件,可以用命令
tar -tf pic.tar返回結(jié)果是:
pic1/
pic1/Chrysanthemum.jpg
pic1/Desert.jpg
pic1/Hydrangeas.jpg
pic1/Jellyfish.jpg
pic2/
pic2/Koala.jpg
pic2/Lighthouse.jpg
pic2/Penguins.jpg
pic2/Tulips.jpg
提取檔案內(nèi)容
假設(shè)當(dāng)前目錄下僅有pic.tar
提取文件可以用命令
此時(shí)用tree命令查看
.
├── pic1
│ ├── Chrysanthemum.jpg
│ ├── Desert.jpg
│ ├── Hydrangeas.jpg
│ └── Jellyfish.jpg
├── pic2
│ ├── Koala.jpg
│ ├── Lighthouse.jpg
│ ├── Penguins.jpg
│ └── Tulips.jpg
└── pic.tar
注意:不管是歸檔還是提取,原始文件都會(huì)被保留。
tar命令與(解)壓縮
上文已經(jīng)說(shuō)過(guò),bzip2、gzip和xz工具都不能處理目錄,只能處理文件。如果想對(duì)整個(gè)目錄進(jìn)行壓縮,可以先用tar歸檔,再用bzip2、gzip或者xz處理。為了方便,這兩個(gè)過(guò)程可以合二為一。
于是tar命令就有了如下的選項(xiàng):
| -j | 將輸出重定向給bzip2命令來(lái)壓縮或解壓,此時(shí)檔案名最好為*.tar.bz2 |
| -z | 將輸出重定向給gzip命令來(lái)壓縮或解壓,此時(shí)檔案名最好為*.tar.gz |
| -J | 將輸出重定向給xz命令來(lái)壓縮或解壓,此時(shí)檔案名最好為*.tar.xz |
打包并壓縮
- 把目錄dir1和dir2打包成all.tar后,并用bzip2壓縮,最后生成一個(gè)壓縮包,命名為all.tar.bz2
- 把當(dāng)前目錄下的所有.jpg文件打包成jpg.tar后,并用gzip壓縮,最后生成一個(gè)壓縮包,命名為jpg.tar.gz
僅查看
在不解壓的情況下查看壓縮包的內(nèi)容
tar -tf aaa.tar.gz解壓并提取
- 把a(bǔ)aa.tar.gz解壓到當(dāng)前目錄
- 把a(bǔ)aa.tar.bz2解壓到目錄dir(dir必須存在)
簡(jiǎn)單總結(jié)
| *.bz2 | bzip2 | bzip2 -d |
| *.gz | gzip | gzip -d |
| *.xz | xz -z | xz -d |
| *.zip | zip -r | unzip |
| *.tar | tar -cf | tar -xf |
| *.tar.bz2 | tar -cjf | tar -xjf |
| *.tar.gz | tar -czf | tar -xzf |
| *.tar.xz | tar -cJf | tar -xJf |
【參考資料】
https://www.cnblogs.com/chinareny2k/archive/2010/01/05/1639468.html
http://www.cnblogs.com/jyaray/archive/2011/04/30/2033362.html
https://zh.wikipedia.org/wiki/Xz
https://teddysun.com/294.html
總結(jié)
以上是生活随笔為你收集整理的Linux bzip2/gzip/zip/tar 命令详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 烧写文件系统——韦东山嵌入式Linux学
- 下一篇: 使用指针实现char型数组,并将输入的字