linux 壓縮檔案的命令總結

九天高遠發表於2013-07-15

Linux壓縮檔案的讀取

  • *.Z       compress 程式壓縮的檔案;
  • *.bz2     bzip2 程式壓縮的檔案;
  • *.gz      gzip 程式壓縮的檔案;
  • *.tar     tar 程式打包的資料,並沒有壓縮過;
  • *.tar.gz  tar 程式打包的檔案,其中並且經過 gzip 的壓縮!
  • *.zip     zip 程式壓縮檔案
  • *.rar     rar 程式壓縮檔案

Compress壓縮檔案

[root@test /root]# cp /etc/man.config /root 
[root@test /root]# compress man.config //壓縮man.config這個檔案

[root@test /root]# compress -d man.config.Z  //-d 解壓縮這個檔案
[root@test /root]# uncompress man.config.Z  //解壓縮這個檔案

當你以 compress 壓縮之後,如果沒有下達其它的引數,那麼原本的檔案就會被後來的 *.Z 所取代!

Gzip壓縮檔案和zcat

[root@test /root]# gzip [-d#] filename <==壓縮與解壓縮 
[root@test /root]# zcat filename.gz     <==讀取壓縮檔內容 
引數說明:  
-d  :解壓縮的引數! 

-r  :遞迴處理,將指定目錄下的所有檔案及子目錄一併處理
-#  :壓縮等級, 1 最不好, 9 最好, 6 是預設值!

[root@test /root]# gzip man.config   //會產生 man.config.gz 這個檔案 

[root@test /root]# zcat man.config.gz //會讀取出 man.config 的內容

[root@test /root]# gzip -d man.config.gz  
[root@test /root]# gunzip man.config.gz 
解壓縮,產生 man.config 這個檔案

[root@test /root]# gzip -9 man.config  //以最大壓縮比壓縮 testing 這個檔案!

[root@test /root]# gzip -r filename.gz file1 file2 file3 /usr/work/school 
//file1file2 file3、以及 /usr/work/school 目錄的內容(假設這個目錄存在)壓縮起來,然後放入 filename.bz2 檔案中

Bzip2壓縮檔案和bzcat

[root@test /root]# bzip2 [-dz] filename <==壓縮解壓縮指令 
[root@test /root]# bzcat filename.bz2   <==讀取壓縮檔案內容指令 
引數說明: 
-d  :解壓縮的意思!
 
-z  :壓縮的意思! 

範例: 
同樣的,我們以剛剛複製過來的 /root/man.config 這個檔案為例
 
[root@test /root]# bzip2 –z man.config 
[root@test /root]# bzcat man.config.bz2 
[root@test /root]# bzip2 –d man.config.bz2 
[root@test /root]# bunzip2 man.config.bz2

[root@test /root]# bzip2 filename.bz2 file1 file2 file3 /usr/work/school  

//file1file2 file3、以及 /usr/work/school 目錄的內容(假設這個目錄存在)壓縮起來,然後放入 filename.bz2 檔案中

Tar壓縮檔案

[root@test /root]# tar [-zxcvfpP] filename  
[root@test /root]# 
tar -N 'yyyy/mm/dd' /path -zcvf target.tar.gz source  
引數說明:  
-z  :是否同時具有 gzip 的屬性?
  
-x  :解開一個壓縮檔案的引數指令!
  
-t  :檢視 tarfile 裡面的檔案!
 
-c  :建立一個壓縮檔案的引數指令
  
-v  :壓縮的過程中顯示檔案!
  
-f  :使用檔名,請留意,在 f 之後要立即接檔名喔!不要再加引數!
 
   例如使用『 tar -zcvfP tfile sfile』就是錯誤的寫法,要寫成
 
   『 tar -zcvPf tfile sfile』才對喔!
 
-p  :使用原檔案的原來屬性(屬性不會依據使用者而變)
  
-P  :可以使用絕對路徑
  
-N  :比後面接的日期(yyyy/mm/dd)還要新的才會被打包進新建的檔案中!
  
--exclude FILE:在壓縮的過程中,不要將 FILE 打包!  

範例:  
[root@test /root]# tar -cvf directory.tar directory 

//只將目錄整合打包成一個檔案 

[root@test /root]# tar -zcvf directory.tar.gz directory  
除了將目錄打包外,同時以 gzip 壓縮 

[root@test /root]# tar -zcvf filename.tar.gz  /home/test/*  
將 /home/test/ 這個目錄下的檔案全部打包並壓縮成為一個 filename.tar.gz 的檔案

[root@test /root]# tar -jcvf /tmp/etc.tar.bz2 /etc <==打包後,以 bzip2 壓縮

[root@test /root]# tar -xvf  directory.tar  
解 tar 的封包,請注意,由於沒有 gzip (.tar 而非 .tar.gz) 的作用,所以只要使用 –xvf 即可!不需要加上 z ,否則會顯示有問題!

[root@test /root]# tar -zxvf directory.tar.gz  
這個就是有加上 gzip 的壓縮的結果!所以需要加上 –z 哦!

[root@test /root]# tar –ztvf directory.tar.gz 
這個 t 可以用來檢視 tar 裡面的檔案資訊呢!而不需要將他解開!

[root@test /root]# tar -zcvPf home.tar.gz /home  
則建立起來的壓縮檔內檔案為絕對路徑  
請注意,使用這個 P 的引數時,不要將 P 加在 f 後面,因為
 
f 之後要立即接檔名才行喔!

[root@test /root]# tar -N '2002/06/25' -zcvf home.tar.gz /home  
上面是說 在 /home 這個目錄中,比 2002/06/25 日還要新的檔案才會被打包進入 home.tar.gz這個檔案中! 

[root@test /root]# tar -zcvf host.tar.gz / --exclude /mnt --exclude /proc  
上面是說,將根目錄的所有資料都打包進 host.tar.gz 這個檔案中,但是 /mnt 及 /proc 則不打包! 

[root@test /root]# tar -cvf - /home | tar -xvf - 
上面的意思是『將 /home 打包之後,直接解壓縮在 /root 底下!』嘿嘿!不需要再建立一次中間檔案!不過,使用上面的語法最好使用『絕對路徑』,比較不會有問題!這個方式適合不想要建立中間檔案時!

Zip和unzip壓縮檔案

[root@test /root]# zip -r myfile.zip ./*  //將當前目錄下的所有檔案和資料夾全部壓縮成myfile.zip檔案,-r表示遞迴壓縮子目錄下所有檔案.

[root@test /root]# zip -d myfile.zip smart.txt  //刪除壓縮檔案中smart.txt檔案

[root@test /root]# zip -m myfile.zip ./rpm_info.txt //向壓縮檔案中myfile.zip中新增rpm_info.txt檔案

 

[root@test /root]# unzip -o -d /home/sunny myfile.zip //把myfile.zip檔案解壓到/home/sunny/

Rar壓縮檔案

現在網上多數壓縮包是rar格式的,所以需要一個rar工具。

首先在http://www.rarlab.com/download.htm下載RAR 3.60 beta 6 for Linux

我解壓到/opt下,會自動建立rar目錄。這個工具無需編譯可以直接使用。

在$HOME目錄下建立bin目錄。

在bin目錄中建立一個連結。ln -s /opt/rar/rar rar。

就可以用rar工具壓縮和解壓.rar檔案了。不過此工具是命令方式的,和在DOS下的RAR操作是一樣的。

 

 

相關文章