Linux之檔案壓縮與打包詳解,linux打包詳解

來源:互聯網
上載者:User

Linux之檔案壓縮與打包詳解,linux打包詳解

在講解壓縮與打包之前說一下什麼是壓縮,簡單的說,就是經過壓縮軟體壓縮的檔案叫壓縮檔,壓縮的原理是把檔案的二進位代碼壓縮,把相鄰的0,1代碼減少,比如有000000,可以把它變成6個0 的寫法60,來減少該檔案的空間,電腦中都是以byte為單位的,其實bit才是計算的最小單位,比如對於一個8位的 0000 00001正好是一個byte,但是發現前7位都是0,因此可以“記錄”1,這樣就省下了 7 bits,實現檔案變小的功能。

Linux 系統常見的壓縮命令有以下幾個,這裡之所以有擴名,完全是為了我們解讀檔案的直觀性,看到就知道是什麼格式的壓縮檔,最主要的是不同的壓縮格式解壓縮的方式不同,所以通過尾碼名,可以使用正確的解壓縮方式進行解壓縮

1、gzip , zcap

gzip是應用最為廣泛的壓縮命令,gzip 可以解壓zip 和 gzip等軟體的壓縮檔

[root @localhost ~]#gzip [-cdtv#]  filename[root @localhost ~]#zcap filename.gz參數解析:-c: 將壓縮的資料輸出到螢幕上,可通過資料流重新導向來處理-d:解壓縮參數-t: 用來檢查一個壓縮檔的一致性,查看檔案有無錯誤-v: 顯示源檔案和壓縮檔的壓縮比例-#:壓縮等級,-1,壓縮速度最快,壓縮比最差,-9最慢,壓縮比最好,預設是-6

注意:使用gzip進行壓縮時,預設下檔案被壓縮成.gz的形式,源檔案會被刪除

知道普通檔案的查看可以是 cat 命令,同樣,壓縮檔可以使用 zcat 進行查看 壓縮檔的內容

現在將上述壓縮檔解壓縮

[root@localhost tmp]# gzip -d man.config.gz

注意:gzip -d 解壓縮後,預設的將.gz的壓縮檔刪除,產生源檔案

利用重新導向保留源檔案和壓縮檔

[root@localhost tmp]# gzip -c man.config > man.config.gz

2、bzip2,bzcat

bzip2壓縮方式是為了取代gzip並提供最佳的壓縮比而產生的,其用法同gzip完全一樣,只是為了更好的壓縮比,同時為了查看壓縮檔的內容,使用bzcat進行查看,壓縮檔的尾碼是 .bz

[root @localhost ~]#bzip2 [-cdtv#]  filename[root @localhost ~]#bzcap filename.bz2參數解析:-c: 將壓縮的資料輸出到螢幕上,可通過資料流重新導向來處理-d:解壓縮參數-t: 用來檢查一個壓縮檔的一致性,查看檔案有無錯誤-v: 顯示源檔案和壓縮檔的壓縮比例-#:壓縮等級,-1,壓縮速度最快,壓縮比最差,-9最慢,壓縮比最好,預設是-6
3、打包 tar

什麼是打包?就是將多個檔案或者目錄包成一個檔案的功能。

[root @localhost ~]#tar [-j|-z] [cv] [-f建立的檔案名稱] filename1,filenam2....  #打包與壓縮[root @localhost ~]#tar [-j|-z] [-tv] [-f 建立的檔案名稱]                       #查看檔案名稱[root @localhost ~]#tar [-j|-z] [xv] [-f建立的檔案名稱] [-C 目錄]               #解壓縮參數參數解析:-c:建立打包檔案,可搭配 -v來查看過程中被打包的檔案名稱 filename1...-t:查看打包檔案的內容含有哪些檔案名稱,重點在查看檔案名稱-x: 解打包或者解壓縮,搭配 -C 在特定目錄解開,特別注意:-c,-t,-x不可同時出現在一串命令列中-j: 通過bzip2的支援進行壓縮/解壓縮,此時檔案名稱的尾碼建議為.tar.bz2-z: 通過gzip的支援進行壓縮/解壓縮,此時檔案名稱的尾碼建議為.tar.gz-v: 在壓縮/解壓縮的過程中,將正在處理的檔案名稱顯示處理-f filename: -f後面跟要被處理的檔案,建議 -f 單獨寫成一個參數-C 目錄: 這個參數在解壓縮時,若要在特定目錄解壓縮,可以使用這個參數

另外還有兩個參數:

-p: 保留備份資料的基本許可權與屬性,常用與備份(-c)重要的設定檔

-P:保留絕對路徑,即允許備份資料中含有根目錄存在之意

注意:之所以要將 -f filename單獨寫,如果 -jcvf filename也可以,但由於參數的順序是可以變更,這樣與 -jvfc filename 僅 僅是變更了參數順序,但是這樣是不行,因為 -f filename ,這樣導致產生了檔案名稱為 c 的檔案,因此建議-f單獨列出來

常見的使用tar如下幾條命令:

[root @localhost ~]#tar -jcv -f filename.tar.bz2 要被壓縮的檔案和目錄    #壓縮命令[root @localhost ~]#tar -jtv -f filename.tar.bz2                         #查詢[root @localhost ~]#tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄       #解壓縮

將/etc目錄下的檔案打包並壓縮為etc.tar.gz的壓縮檔

[root @localhost ~]#tar -zpcv -f /root/etc.tar.gz /etc

由於指定了 -v 參數,因此會將打包壓縮過程中的檔案名稱顯示在螢幕上,對於 -p 參數,是為了保留源檔案的許可權和屬性

圖中,顯示了部分打包壓縮過程中的檔案名稱。解壓縮

[root @localhost ~]#tar -jpcv -f /root/etc.tar.gz /etc
[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2                 #將 tar 檔案解壓縮

注意:檔案的備份和複製過程中,檔案的許可權可能會發生變更,因此在備份重要的系統資料時,源檔案的許可權必須進行完整的備份

查看 tar 檔案的資料內容

[root @localhost ~]#tar -jtv -f /root/etc.tar.bi2

這裡給出整個過程:

[root @localhost ~]#tar -jpcv -f /root/etc.tar.bz2 /etc           #將  /etc  目錄壓縮為etc.bta.bz2 的壓縮檔
[root @localhost ~]#tar -jtv -f /root/etc.tar.bz2                 #查看 tar 檔案的資料內容

查看壓縮檔的內容時,使用 參數 -v 會將檔案許可權/屬性顯示出來

[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2                 #將 tar 檔案解壓縮

此時會看到解壓縮後的檔案 /etc 會在本目錄下產生

通常需要指定解壓縮的位置,將解壓縮後的檔案放在 /tmp 目錄下

[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2  -C /tmp               #指定 tar 檔案解壓縮的位置為 /tmp

a.那如果只是想解壓壓縮檔中的某一個檔案呢?

使用 -jtv 找到你要的檔案名稱

[root @localhost ~]#tar -jtv -f /root/etc.tar.bz2   | grep 'shadow'              #找到需要解壓的檔案[root @localhost ~]#tar -jxv -f /root/etc.tar.bz2  /etc/shadow                   #解壓壓縮檔中的一個檔案

其中方法是,先通過 -jtv 找到需要解壓的檔案,然後使用 -jxv 進行解壓

[root @localhost ~]#tar -jxv -f 打包檔案.tar.bz2 待解壓的檔案名稱

b.打包某個目錄,但是不包含該目錄下的某些檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.