標籤:style http io os 使用 ar 檔案 資料 div
Linux 系統常見的壓縮命令:
在Linux中,壓縮檔的副檔名大多是:『*.tar, *.tar.gz, *.tgz, *.gz, *.Z, *.bz2』
Linux 支援的壓縮命令非常多,且不同的命令所用的壓縮技術並不相同,彼此之間可能就無法相互壓縮/解壓縮檔案。所以,當你下載到某個壓縮檔時,自然就需要知道該檔案是由哪種壓縮命令所製作出來的,好用來對照著解壓縮!雖然 Linux 檔案的屬性基本上是與檔名沒有絕對關係的,但是為了協助我們人類,所以適當的副檔名還是必要的!
*.Z compress 程式壓縮的檔案;*.gz gzip 程式壓縮的檔案;*.bz2 bzip2 程式壓縮的檔案;*.tar tar 程式打包的資料,並沒有壓縮過;*.tar.gz tar 程式打包的檔案,其中並且經過 gzip 的壓縮*.tar.bz2 tar 程式打包的檔案,其中並且經過 bzip2 的壓縮 |
bzip2 gzip命名僅能針對一個檔案來壓縮與解壓縮!
tar 可以將很多檔案(目錄)『打包』成為一個檔案,它並沒有提供壓縮的功能,後來,GNU 計劃將tar 與壓縮的功能結合在一起,如此一來可以提供給使用者更方便並且更強大的壓縮與打包功能!
compress
gzip能解開使用 compress 壓縮的檔案!
[[email protected] ~]# yum install ncompressbase 100% |=========================| 1.1 kB 00:00updates 100% |=========================| 951 B 00:00addons 100% |=========================| 951 B 00:00extras 100% |=========================| 1.1 kB 00:00Setting up Install ProcessParsing package install argumentsResolving Dependencies <==開始分析相依性--> Running transaction check---> Package ncompress.i386 0:4.2.4-47 set to be updated--> Finished Dependency ResolutionDependencies Resolved======================================================= Package Arch Version Repository Size=======================================================Installing: ncompress i386 4.2.4-47 base 23 kTransaction Summary=======================================================Install 1 Package(s) <==最後分析所要安裝的軟體數Update 0 Package(s)Remove 0 Package(s)Total download size: 23 kIs this ok [y/N]: y <==這裡請按下 y 來確認安裝Downloading Packages:(1/1): ncompress-4.2.4-47 100% |=========================| 23 kB 00:00warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID e8562897Importing GPG key 0xE8562897 "CentOS-5 Key (CentOS 5 Official Signing Key) <[email protected]>" from http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5Is this ok [y/N]: y <==這裡則是與數位簽章有關Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Installing: ncompress ######################### [1/1 |
[[email protected] ~]# compress [-rcv] 檔案或目錄 <==這裡是壓縮[[email protected] ~]# uncompress 檔案.Z <==這裡是解壓縮選項與參數:-r :可以連同目錄下的檔案也同時給予壓縮!-c :將壓縮資料輸出成為 standard output (輸出到螢幕)-v :顯示壓縮後的檔案資訊以及壓縮過程中的一些檔名變化。範例一:將 /etc/man.config 複製到 /tmp ,並加以壓縮[[email protected] ~]# cd /tmp[[email protected] tmp]# cp /etc/man.config .[[email protected] tmp]# compress -v man.configman.config: -- replaced with man.config.Z Compression: 41.86%[[email protected] tmp]# ls -l /etc/man.config /tmp/man*-rw-r--r-- 1 root root 4617 Jan 6 2007 /etc/man.config <==原有檔案-rw-r--r-- 1 root root 2684 Nov 10 17:14 /tmp/man.config.Z <==經過壓縮的檔案! |
複製到 /tmp 的 man.config 不見了!因為被壓縮成為 man.config.Z,在預設的情況中,被 compress 壓縮的原始檔案會不見,而壓縮檔會被建立起來, 而且副檔名會是 *.Z。
範例二:將剛剛的壓縮檔解開[[email protected] tmp]# uncompress man.config.Z[[email protected] tmp]# ll man*-rw-r--r-- 1 root root 4617 Nov 10 17:14 man.config |
解壓縮後壓縮檔卻又不存在。如果想要保留原始檔案且又要建立壓縮檔可以使用 -c 的文法!
範例三:將 man.config 壓縮成另外一個檔案來備份[[email protected] tmp]# compress -c man.config > man.config.back.Z[[email protected] tmp]# ll man*-rw-r--r-- 1 root root 4617 Nov 10 17:14 man.config-rw-r--r-- 1 root root 2684 Nov 10 17:24 man.config.back.Z# -c會將壓縮過程的資料輸出到螢幕上,而不是寫入成為 # *.Z 的壓縮檔。所以,可以透過資料流重導向的方法將資料輸出成為另一個檔名。 |
compress 已經很少人在使用了,因為compress無法解開 *.gz 的檔案,而 gzip 則可以解開 *.Z 的檔案
gzip, zcat
gzip 可以解開 compress, zip 與 gzip 等軟體所壓縮的檔案。 *.gz
[[email protected] ~]# gzip [-cdtv#] 檔名[[email protected] ~]# zcat 檔名.gz選項與參數:-c :將壓縮的資料輸出到螢幕上,可透過資料流重導向來處理;-d :解壓縮的參數;-t :可以用來檢驗一個壓縮檔的一致性 看看檔案有無錯誤;-v :可以顯示出原檔案/壓縮檔的壓縮比等資訊;-# :壓縮等級,-1 最快,但是壓縮比最差、-9 最慢,但是壓縮比最好!預設是 -6範例一:將 /etc/man.config 複製到 /tmp ,並且以 gzip 壓縮[[email protected] ~]# cd /tmp [[email protected] tmp]# cp /etc/man.config .[[email protected] tmp]# gzip -v man.configman.config: 56.1% -- replaced with man.config.gz[[email protected] tmp]# ll /etc/man.config /tmp/man*-rw-r--r-- 1 root root 4617 Jan 6 2007 /etc/man.config-rw-r--r-- 1 root root 2684 Nov 10 17:24 /tmp/man.config.back.Z-rw-r--r-- 1 root root 2057 Nov 10 17:14 /tmp/man.config.gz <==gzip壓縮比較佳 |
在預設的狀態下原本的檔案會被壓縮成為 .gz 的檔名, 原始檔案就不再存在了。使用 gzip 壓縮的檔案在 Windows 系統中,可以被 WinRAR 這個軟體解壓縮:
範例二:由於 man.config 是文字檔,請將範例一的壓縮檔的內容讀出來![[email protected] tmp]# zcat man.config.gz# 由於 man.config 這個原本的檔案是是文字檔,因此我們可以嘗試使用 zcat 去讀取!# 此時螢幕上會顯示 man.config.gz 解壓縮之後的檔案內容!範例三:將範例一的檔案解壓縮[[email protected] tmp]# gzip -d man.config.gz# 不要使用 gunzip 這個命令,不好背!使用 gzip -d 來進行解壓縮!# 與 gzip 相反, gzip -d 會將原本的 .gz 刪除,產生原本的 man.config 檔案。範例四:將範例三解開的 man.config 用最佳的壓縮比壓縮,並保留原本的檔案[[email protected] tmp]# gzip -9 -c man.config > man.config.gz |
其實 gzip 的壓縮已經最佳化過了,所以雖然 gzip 提供 1~9 的壓縮等級,不過使用預設的 6 就非常好用了! 因此上述的範例四可以不要加入那個 -9 的選項。
cat 可以讀取純文字檔,那個 zcat 則可以讀取純文字檔被壓縮後的壓縮檔! 由於 gzip 這個壓縮命令主要想要用來取代 compress 的,所以不但 compress 的壓縮檔可以使用 gzip 來解開,同時 zcat 這個命令可以同時讀取 compress 與 gzip 的壓縮檔!
bzip2, bzcat
gzip 是為了取代 compress 並提供更好的壓縮比而開發的,那麼 bzip2 則是為了取代 gzip 並提供更佳的壓縮比而開發的。
[[email protected] ~]# bzip2 [-cdkzv#] 檔名[[email protected] ~]# bzcat 檔名.bz2選項與參數:-c :將壓縮的過程產生的資料輸出到螢幕上!-d :解壓縮的參數-k :保留原始檔案,而不會刪除原始的檔案喔!-z :壓縮的參數-v :可以顯示出原檔案/壓縮檔的壓縮比等資訊;-# :與 gzip 同樣的,都是在計算壓縮比的參數, -9 最佳, -1 最快!範例一:將剛剛的 /tmp/man.config 以 bzip2 壓縮[[email protected] tmp]# bzip2 -z man.config # 此時 man.config 會變成 man.config.bz2 !範例二:將範例一的檔案內容讀出來![[email protected] tmp]# bzcat man.config.bz2# 此時螢幕上會顯示 man.config.bz2 解壓縮之後的檔案內容!!範例三:將範例一的檔案解壓縮[[email protected] tmp]# bzip2 -d man.config.bz2範例四:將範例三解開的 man.config 用最佳的壓縮比壓縮,並保留原本的檔案[[email protected] tmp]# bzip2 -9 -c man.config > man.config.bz2 |
使用 compress 副檔名自動建立為 .Z ,使用 gzip 副檔名自動建立為 .gz 。 bzip2 則是自動的將副檔名建置為 .bz2!
bzcat 這個命令可以讀取內容
第九章、檔案與檔案系統的壓縮與打包 Linux 系統常見的壓縮命令