本篇文章為大家展示了Linux中有哪些文件的壓縮與解壓縮命令,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
10年積累的成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對(duì)客戶(hù)對(duì)網(wǎng)站的新想法和需求。提供各種問(wèn)題對(duì)應(yīng)的解決方案。讓選擇我們的客戶(hù)得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先做網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有巴楚免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1、zip壓縮與解壓縮
zip是最為廣泛使用的壓縮程序,經(jīng)它壓縮的文件會(huì)產(chǎn)生擴(kuò)展名為zip的壓縮文件,而且這種格式在多種系統(tǒng)上可以使用,像windows中的winzip
下面看一下在linux中如何建立zip文件。
我們?cè)诮K端中輸入zip會(huì)出現(xiàn)這個(gè)命令的一些介紹和參數(shù)的意義。
代碼如下:
xiaopeng@ubuntu:~/test$ zip
Copyright (c) 1990-2006 Info-ZIP - Type 'zip "-L"' for software license.
Zip 2.32 (June 19th 2006). Usage:
zip [-options] [-b path] [-t mmddyyyy] [-n suffixes] [zipfile list] [-xi list]
The default action is to add or replace zipfile entries from list, which
can include the special name - to compress standard input.
If zipfile and list are omitted, zip compresses stdin to stdout.
-f freshen: only changed files -u update: only changed or new files
-d delete entries in zipfile -m move into zipfile (delete files)
-r recurse into directories -j junk (don't record) directory names
-0 store only -l convert LF to CR LF (-ll CR LF to LF)
-1 compress faster -9 compress better
-q quiet operation -v verbose operation/print version info
-c add one-line comments -z add zipfile comment
-@ read names from stdin -o make zipfile as old as latest entry
-x exclude the following names -i include only the following names
-F fix zipfile (-FF try harder) -D do not add directory entries
-A adjust self-extracting exe -J junk zipfile prefix (unzipsfx)
-T test zipfile integrity -X eXclude eXtra file attributes
-y store symbolic links as the link instead of the referenced file
-R PKZIP recursion (see manual)
-e encrypt -n don't compress these suffixes
下面我們就最簡(jiǎn)單的實(shí)驗(yàn)一下。我們就是把當(dāng)前目錄下文件名以test開(kāi)頭的所有文件壓縮文一個(gè)文件,并可以查看一下壓縮比。(紅色是我的注釋?zhuān)?br/>
代碼如下:
xiaopeng@ubuntu:~/test$ ls -lh
總用量 24K
代碼如下:
-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1
-rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2
-rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3
-rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4
代碼如下:
xiaopeng@ubuntu:~/test$ zip test.zip test*
zip命令后面先跟壓縮后的文件名,這里是test.zip,當(dāng)然后綴名不是必須的。然后跟要壓縮的文件名。這里用的test*指的是全部以test開(kāi)頭的文件,包括test1 test2 test3 test4
adding: test1 (deflated 30%) 這里顯示的是壓縮比
adding: test2 (deflated 65%)
adding: test3 (deflated 64%)
adding: test4 (deflated 73%) 大體可以看出源文件越大,壓縮比就越大
代碼如下:
xiaopeng@ubuntu:~/test$ ls -lh
總用量 32K
代碼如下:
-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1
-rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2
-rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3
-rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4
-rw-r--r-- 1 xiaopeng xiaopeng 5.0K 2009-06-25 14:17 test.zip
xiaopeng@ubuntu:~/test$
上面是壓縮了相同類(lèi)型的文件,其實(shí)也可以把不同類(lèi)型的文件壓縮到一起。有時(shí)候?yàn)榱斯?jié)省硬盤(pán)空間,可以在建立壓縮文件后,自動(dòng)刪除原始文件,此時(shí)只要帶一個(gè) -m 的參數(shù)就可以。
代碼如下:
xiaopeng@ubuntu:~/test$ ls -lh
總用量 24K
代碼如下:
-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1
-rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2
-rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3
-rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4
xiaopeng@ubuntu:~/test$ zip -m test.zip test* 帶參數(shù)-m
updating: test1 (deflated 30%)
updating: test2 (deflated 65%)
updating: test3 (deflated 64%)
updating: test4 (deflated 73%)
xiaopeng@ubuntu:~/test$ ls -lh
總用量 8.0K
代碼如下:
-rw-r--r-- 1 xiaopeng xiaopeng 5.0K 2009-06-25 14:26 test.zip
xiaopeng@ubuntu:~/test$
可以看出 原始文件已經(jīng)被刪除,只有壓縮文件留下了。
在壓縮一些目錄的時(shí)候,經(jīng)出在目錄中會(huì)有子目錄,此時(shí)根據(jù)子目錄中的文件是否壓縮分為兩種情況,一種是壓縮,一種是忽略自錄中的內(nèi)容,如果選擇壓縮子目錄,則使用-r參數(shù),如果不壓縮,則使用-j 參數(shù)
下面舉例,一個(gè)是-r 一個(gè)是-j
代碼如下:
xiaopeng@ubuntu:~/test$ ls -lh
總用量 28K
代碼如下:
drwxr-xr-x 2 xiaopeng xiaopeng 4.0K 2009-06-25 14:31 pdf
-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1
-rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2
-rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3
-rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4
xiaopeng@ubuntu:~/test$ zip -r test.zip * 壓縮當(dāng)前目錄所有內(nèi)容,r 參數(shù)說(shuō)明pdf這個(gè)子目錄中的內(nèi)容也壓縮
adding: pdf/ (stored 0%)
adding: pdf/case_Contact.pdf (deflated 10%)
adding: pdf/case_KRUU.pdf (deflated 9%)
adding: pdf/case_howard_county_library.pdf (deflated 24%)
adding: test1 (deflated 30%)
adding: test2 (deflated 65%)
adding: test3 (deflated 64%)
adding: test4 (deflated 73%)
xiaopeng@ubuntu:~/test$
下面的情況是子目錄不壓縮
代碼如下:
xiaopeng@ubuntu:~/test$ ls -l
總用量 28
代碼如下:
drwxr-xr-x 2 xiaopeng xiaopeng 4096 2009-06-25 14:31 pdf
-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1
-rw-r--r-- 1 xiaopeng xiaopeng 1233 2009-06-25 14:13 test2
-rw-r--r-- 1 xiaopeng xiaopeng 3412 2009-06-25 14:14 test3
-rw-r--r-- 1 xiaopeng xiaopeng 10091 2009-06-25 14:14 test4
xiaopeng@ubuntu:~/test$ zip -j test.zip *
adding: test1 (deflated 30%)
adding: test2 (deflated 65%)
adding: test3 (deflated 64%)
adding: test4 (deflated 73%)
子目錄pdf被忽略
代碼如下:
xiaopeng@ubuntu:~/test$
令外一個(gè)技巧: 某些文件因?yàn)榫幋a的原因,已經(jīng)大幅的減少了文件的大小,如GIF,JPG 等格式,在用zip壓縮幾乎沒(méi)什么作用而浪費(fèi)了時(shí)間,此時(shí)可一用-n參數(shù)直接保存這些文件而不壓縮。例如:
代碼如下:
xiaopeng@ubuntu:~/test$ ls -lh
總用量 68K
代碼如下:
-rw-r--r-- 1 xiaopeng xiaopeng 18K 2009-06-04 21:18 duality.jpg
-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 14:13 test1
-rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2
-rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3
-rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4
-rw-r--r-- 1 xiaopeng xiaopeng 23K 2009-06-10 15:07 test.jpg
xiaopeng@ubuntu:~/test$ zip -n .jpg test.zip *
adding: duality.jpg (stored 0%)
adding: test1 (deflated 30%)
adding: test2 (deflated 65%)
adding: test3 (deflated 64%)
adding: test4 (deflated 73%)
adding: test.jpg (stored 0%)
jpg格式的沒(méi)有壓縮而是直接保存了
代碼如下:
xiaopeng@ubuntu:~/test$
如果需要直接保存的格式多于一個(gè),可以用冒號(hào)隔開(kāi) 如: -n .jpg: .mpg
小技巧,有時(shí)候一個(gè)目錄下要壓縮的文件很多,但是有那么很少的幾個(gè)不壓縮,那么我們可以用-x參數(shù)來(lái)排除這幾個(gè)不壓縮的。例如
代碼如下:
xiaopeng@ubuntu:~/test$ ls
duality.jpg test1 test2 test3 test4 test.jpg test.zip
xiaopeng@ubuntu:~/test$ zip -n .jpg test.zip * -x test2 不壓縮test2
updating: duality.jpg (stored 0%)
updating: test1 (deflated 30%)
updating: test3 (deflated 64%)
updating: test4 (deflated 73%)
updating: test.jpg (stored 0%)
xiaopeng@ubuntu:~/test$
可以看到test2沒(méi)有被壓縮,而是直接跳過(guò)了它。
壓縮鏈接,zip會(huì)先讀取該鏈接的指向的原文件的內(nèi)容,然后再壓縮,而且壓縮完了,該鏈接也就不存在了。
另外,壓縮率也是可以調(diào)整的。等級(jí)是1到9,1最低,9最高,默認(rèn)是6 。我們可以用1和9來(lái)比較下,壓縮率。
代碼如下:
xiaopeng@ubuntu:~/test$ zip -1 low.zip *
adding: test1 (deflated 30%)
adding: test2 (deflated 63%)
adding: test3 (deflated 62%)
adding: test4 (deflated 70%)
xiaopeng@ubuntu:~/test$ zip -9 high.zip *
adding: low.zip (deflated 4%)
adding: test1 (deflated 30%)
adding: test2 (deflated 65%)
adding: test3 (deflated 64%)
adding: test4 (deflated 73%)
因?yàn)槲募急容^小,效果不是很明顯,但是9的壓縮率確實(shí)高了一點(diǎn)點(diǎn)。
壓縮率高,節(jié)省空間,但是壓縮時(shí)間要長(zhǎng),壓縮率低,節(jié)省空間少,但是用時(shí)間少,所以我們要合理選擇壓縮率,一般都用默認(rèn)。
zip文件解壓縮。這個(gè)比較簡(jiǎn)單,就是unzip命令。
代碼如下:
xiaopeng@ubuntu:~/test$ ls
test.zip
xiaopeng@ubuntu:~/test$ unzip test.zip
Archive: test.zip
inflating: test1
inflating: test2
inflating: test3
inflating: test4
xiaopeng@ubuntu:~/test$
當(dāng)然也可以用-x參數(shù)來(lái)指定哪個(gè)文件不需要壓縮。
代碼如下:
xiaopeng@ubuntu:~/test$ unzip test.zip -x test3 test3不需要壓縮出來(lái)
Archive: test.zip
inflating: test1
inflating: test2
inflating: test4
xiaopeng@ubuntu:~/test$
還有一個(gè)很有用的參數(shù),-Z ,注意是大寫(xiě)的Z 。作用是查看壓縮文件的內(nèi)容。就像windows中的winzip,我們不用解壓縮,也可以打開(kāi)看看里面有什么文件,文件的類(lèi)型什么。比如我想看看test.zip里面的內(nèi)容,而又不想把這個(gè)解壓縮了再看,可以如下操作。
代碼如下:
xiaopeng@ubuntu:~/test$ unzip -Z test.zip
Archive: test.zip 5069 bytes 4 files
-rw-r--r-- 2.3 unx 212 tx defN 25-Jun-09 14:13 test1
-rw-r--r-- 2.3 unx 1233 tx defN 25-Jun-09 14:13 test2
-rw-r--r-- 2.3 unx 3412 tx defN 25-Jun-09 14:14 test3
-rw-r--r-- 2.3 unx 10091 tx defN 25-Jun-09 14:14 test4
4 files, 14948 bytes uncompressed, 4567 bytes compressed: 69.4%
xiaopeng@ubuntu:~/test$
當(dāng)然除了這些參數(shù)外,還有很多參數(shù)可以使用,這里就不一一實(shí)驗(yàn)了,我們可以在使用的過(guò)程中加以掌握。
2、zip與 tar
如果你在Linux里面安裝過(guò)軟件壓縮包,對(duì)這個(gè)以.tar.gz為后綴的壓縮文件不會(huì)陌生,比如我們?cè)贚inux QQ 的下載頁(yè)面http://im.qq.com/qq/linux/download.shtml ,就會(huì)看到其中一個(gè)安裝包就是.tar.gz包。
這種包帶兩個(gè)后綴是有原因的,gz和tar 是分別由兩種程序產(chǎn)生的。gz時(shí)由gzip壓縮而成的壓縮文件,壓縮效果和zip差不多,但是和zip最大的不同在于,gzip無(wú)法把很多個(gè)單一文件壓縮成一個(gè)單一文件,所以tar就有了用武之地,tar不是什么壓縮程序,它是用來(lái)打包文件的。tar和gzip一見(jiàn)如故,兩個(gè)人合作起來(lái)實(shí)現(xiàn)壓縮,也就是當(dāng)多個(gè)文件壓縮時(shí),先用tar把這些文件打包,成為.tar的包,然后再由gzip壓縮這個(gè)包,于是就有了.tar.gz的文件格式。
首先先看一下gzip和 gunzip的應(yīng)用。gzip的用法很簡(jiǎn)單,后面加上要壓縮的文件名就行。
代碼如下:
xiaopeng@ubuntu:~/test$ ls -lh
總用量 24K
代碼如下:
-rw-r--r-- 1 xiaopeng xiaopeng 212 2009-06-25 15:49 test1
-rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2
-rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3
-rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4
xiaopeng@ubuntu:~/test$ gzip test1
xiaopeng@ubuntu:~/test$ ls -lh
總用量 24K
代碼如下:
-rw-r--r-- 1 xiaopeng xiaopeng 173 2009-06-25 15:49 test1.gz
-rw-r--r-- 1 xiaopeng xiaopeng 1.3K 2009-06-25 14:13 test2
-rw-r--r-- 1 xiaopeng xiaopeng 3.4K 2009-06-25 14:14 test3
-rw-r--r-- 1 xiaopeng xiaopeng 9.9K 2009-06-25 14:14 test4
注意和zip的不同,只要在命令后加上要壓縮的文件名即可,系統(tǒng)會(huì)自動(dòng)為生成的壓縮文件起名為原文件名加后綴.gz ,而且原文件在壓縮完成后會(huì)被刪除。
解壓縮用gunzip
代碼如下:
xiaopeng@ubuntu:~/test$ gunzip *.gz
xiaopeng@ubuntu:~/test$ ls
test1 test2 test3 test4
xiaopeng@ubuntu:~/test$
完成后以前的壓縮文件test1.gz也會(huì)被刪除。
同樣gzip在解壓前也可以查看文件內(nèi)容,用參數(shù)-l,
gzip也支持壓縮率修改,為1到9,和zip相同。
下面看tar的用應(yīng)。tar是用來(lái)打包文件的,打包后的包的大小和以前所有原文件大小的和是相等的,(其實(shí)大小是不相等的,打完包后的大小大于源文件的大小和,這個(gè)可以驗(yàn)證一下?!禪buntu 入門(mén)到精通》說(shuō)一樣大,顯然是不對(duì)的)也就是說(shuō)tar沒(méi)有壓縮的效果。tar有非常多的參數(shù),可以通過(guò)在線(xiàn)幫助文檔查看,或者用--help命令查看。這里我們只用簡(jiǎn)單用到幾個(gè)。
首先是多個(gè)文件打包??蠢印?br/>
代碼如下:
xiaopeng@ubuntu:~/test$ ls
test1 test2 test3 test4
xiaopeng@ubuntu:~/test$ tar -cvf test.tar *
是把當(dāng)前目錄下的所有文件打包成test.tar 幾個(gè)參數(shù)的意義為: c(Creat)建立新文件 v(Verbose)顯示命令執(zhí)行時(shí)的信息 f(File)指定打包為文件形式。
代碼如下:
test1
test2
test3
test4
代碼如下:
xiaopeng@ubuntu:~/test$ ls
test1 test2 test3 test4 test.tar
xiaopeng@ubuntu:~/test$
要解開(kāi)tar文件,只需把參數(shù)中的c改為x(eXtract)即可
代碼如下:
xiaopeng@ubuntu:~/test$ ls
test.tar
xiaopeng@ubuntu:~/test$ tar -xvf test.tar
test1
test2
test3
test4
xiaopeng@ubuntu:~/test$ ls
test1 test2 test3 test4 test.tar
xiaopeng@ubuntu:~/test$
下面我們看一下tar和gzip合作完成對(duì)4個(gè)文件的壓縮。步驟是先用tar打包,然后對(duì)這個(gè).tar包用gzip壓縮,最后得到.tar.gz文件。例子:
代碼如下:
xiaopeng@ubuntu:~/test$ ls
test1 test2 test3 test4
xiaopeng@ubuntu:~/test$ tar cvf test.tar * 首先打包成test.tar
test1
test2
test3
test4
xiaopeng@ubuntu:~/test$ ls
test1 test2 test3 test4 test.tar
xiaopeng@ubuntu:~/test$ gzip test.tar 把test.tar用gzip壓縮成test.tar.gz 壓縮包。
xiaopeng@ubuntu:~/test$ ls
test1 test2 test3 test4 test.tar.gz
xiaopeng@ubuntu:~/test$
解壓.tar.gz包時(shí),和壓縮過(guò)程相反,現(xiàn)解壓,再tar把包打開(kāi)。
代碼如下:
xiaopeng@ubuntu:~/test$ ls
test.tar.gz
xiaopeng@ubuntu:~/test$ gunzip test.tar.gz 先用gunzip把.tar.gz包解壓縮
xiaopeng@ubuntu:~/test$ ls
test.tar
xiaopeng@ubuntu:~/test$ tar xvf test.tar 然后用tar把.tar包打開(kāi)
test1
test2
test3
test4
xiaopeng@ubuntu:~/test$ ls
test1 test2 test3 test4 test.tar
xiaopeng@ubuntu:~/test$
上述內(nèi)容就是Linux中有哪些文件的壓縮與解壓縮命令,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。