首頁 > 軟體

Linux檔案與檔案系統的壓縮與打包

2020-06-16 17:36:58

進來在學習Linux了,不過Linux的命令太多了,怕記不住所以使用部落格記錄的方式來寫下自己的學習過程,以後忘記了還可以翻閱自己寫下的部落格來查查:

  • Linux系統常見的壓縮命令
  • Compress
  • gzip,gcat
  • bzip2,bzcat
  • 打包命令:tar

Linux系統常見的壓縮命令

Linux的環境下,壓縮檔案大多擴充套件名是*.tar, *.tar,*.gz, *.tgz, *.gz, *.Z, *.bz2,下面我們列出常見的壓縮副檔名:
*.Z—————>compress程式壓縮檔案
*.gz—————>gzip程式壓縮的檔案
*.bz2————–>bzip2程式壓縮的檔案
*.tar—————>tar程式打包的資料,並沒有進行壓縮
*.tar.gz————>tar程式打包的檔案,並且經過gzip進行壓縮處理。
*.tar.bz2———–>tar程式打包的檔案,並且經過bzip2進行壓縮處理。

Linux系統常見的壓縮命令就是gzip與bzip2,至於compress已經不再流行了。gzip是由GNU計劃所開發出來的壓縮命令,該命令已經替換了compress。後來GNU有開發出bzip2這個壓縮比更好的壓縮命令。不過這些命令通常只能針對一個檔案來壓縮與解壓縮,如此一來,每次壓縮都要一大堆檔案,豈不是很煩人?此時打包軟體tar就很重要了。

Compress

compress已經非常老舊了,不過學習練練手還是可以的。現在的Linux distribution似乎已經沒有預設安裝了,所以練手時可以安裝ncompress這個軟體。

我這裡提示我已經安裝好了,所以基本上沒有做什麼處理,如果第一次安裝的話可能需要你輸入y,之後繼續安裝。
接下來看看如何使用compress命令。

[root@www ~]#compress [-rcv] 檔案或目錄   <==這裡指壓縮
[root@www ~]#uncompress 檔名.Z          <==這裡指解壓縮
選項與引數:
-r : 可以連同目錄下的檔案也同時給予壓縮。
-c : 將壓縮資料輸出成為standard output(輸出到螢幕)
-v : 可以顯示壓縮後的檔案資訊以及壓縮過程中的檔案資訊

compress壓縮檔案

compress解壓縮檔案

解壓縮之後會發現man_db.conf.Z檔案沒有,如果你想要儲存該檔案可以使用-c的語法。

gzip,zcat

gzip是使用最廣的壓縮命令了。目前gzip可以解壓compress、zip與gzip等壓縮軟體所壓縮的檔案。接下來看下語法:

[root@www ~]#gzip [-cdtv#] 檔名
[root@www ~]#zcat 檔名.gz
引數:
-c : 將壓縮的資料輸出到螢幕上,可通過資料流重定向來處理;
-d : 解壓縮需要用到的引數;
-t : 可用來校驗一個壓縮檔案的一致性,看看檔案是否有錯誤;
-v : 顯示原檔案/壓縮檔案的壓縮比等資訊;
-# : 壓縮等級,-1最快,但其壓縮比較差,-9最慢,但壓縮比最好,預設-6.

gzip壓縮檔案

zcat讀取壓縮檔案內容

gzip解壓縮檔案

bzip2,bzcat

gzip是為了替代compress而成立的,而bzip2則是為了取代gzip並提供更佳的壓縮比而來的,下面來說下具體的用法:

[root@www ~]#bzip2[-cdkzv#] 檔名
[root@www ~]#bzcat 檔名.bz2
引數:
-c : 將壓縮的資料輸出到螢幕上;
-d : 解壓縮需要用到的引數;
-k : 保留原檔案,而不會刪除原始的檔案;
-z : 壓縮的引數;
-v : 顯示原檔案/壓縮檔案的壓縮比等資訊;
-# : 壓縮等級,-1最快,但其壓縮比較差,-9最慢,但壓縮比最好.

打包命令:tar

雖然gzip與bzip2也能針對目錄來進行壓縮,不過這兩個目錄的壓縮指的是將目錄內的所有檔案“分別”進行壓縮的操作。
這種將多個檔案或目錄包成一個大檔案的命令功能,我們可以稱呼它是一種“打包命令”。Linux下面就是鼎鼎大名的tar。tar可以將多個目錄或檔案打包成一個大檔案,同時還可以通過gzip/bzip2的支援,將該檔案同時進行壓縮。
tar的引數非常多,我們只講幾個常用的引數,更多引數可以自行man tar查詢。

[root@www ~]#tar [-j|-z] [cv] [-f 新建的檔名] filename... <==打包與壓縮
[root@www ~]#tar [-j|-z][tv] [-f 新建的檔名]              <==檢視檔名
[root@www ~]#tar [-j|-z] [xv] [-f 新建的檔名] [-C 目錄]    <==解壓縮
引數:
-c : 新建打包檔案,可搭配-v來檢視過程中被打包的檔名(filename).
-t : 檢視打包檔案的內容含有哪些檔名,重點在檢視檔名.
-x : 解打包或解壓縮的功能,可以搭配-C(大寫)在特別目錄中解開.特別留意的是,-c,-t,-x不可同時出現在一串命令列中.
-j : 通過bzip2的支援進行壓縮/解壓縮,此時檔名最好是*.tar.bz2.
-z : 通過gzip的支援進行壓縮/解壓縮,此時檔名最好是*.tar.gz.
-v : 在壓縮/解壓縮的過程中,將正在處理的檔名顯示出來.
-f filename : -f後面要接被處理的檔名。建議-f單獨寫一個引數。
-C 目錄 : 這個引數用在解壓縮時,若要在特定目錄解壓縮,可以使用這個引數.
-p : 保留備份資料的原本許可權與屬性,通常用於備份(-c)重要的組態檔.
-P : 保留決定路徑,即允許備份資料中含有根目錄存在之意.
--exclude=FILE : 在壓縮的過程中,不要將FILE打包.

其實最簡單的使用tar就只要記憶下面的方式即可:
- 壓縮 : tar -jcv -f filename.tar.bz2 要被壓縮的檔案或目錄名稱。
- 查詢 : tar -jtv -f filename.tar.bz2
- 解壓縮 : tar -jxv -f filename.tar.bz2 -C 欲解壓的目錄

那麼filename.tar.bz2是我們自定義的檔名,tar並不會主動產生建立的檔名。我們要自定義。所以擴充套件名就很重要了。如果不加[-j|-z]的話,檔名最好取為.tar即可。如果是-j引數,代表有bzip2的支援,因此檔名最好就取為.tar.bz2,因為bzip2會產生.bz2的擴充套件名。至於如果是-z引數,代表了gzip的支援,因此檔名最好就取為*.tar.gz。

  • 使用tar加入-j或-z的引數備份/etc/目錄

看到兩種壓縮的方式了嗎,bzip2壓縮確實比gzip壓縮率高,所以推薦用bzip2來進行備份。

  • 查詢tar檔案的資料內容(可檢視檔名),與備份檔名是否有根目錄的意義
  • 要檢視檔名非常簡單,可以這樣做:

  • 將解壓縮的檔案解壓到指定位置(-C引數的應用)

  • 僅解開單個檔案的方法
    首先我們需要使用-jtv找到你要的檔名,然後將該檔名解開即可。
    1.先找到我們要的檔名,假設解開shadow檔案。

    2.將該檔案解開。語法和實際如下:

     

  • 打包某目錄,但不包含該目錄下的某些檔案的做法(–exclude=FILE)
    假設我們想要打包/etc /root 這幾個重要的目錄,但卻不想要打包/root/etc*開頭的檔案,因為該檔案我們都是剛才已經建立的備份檔案。而且假設這個新的打包檔案要放置稱為/root/system.tar.bz2,當然這個檔案不要自己打包自己(因為這個檔案放置在/root下面),此時我們可以通過–exclude的幫忙。so you can do that:
[root@www ~]#tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* 
>--exclude=/root/system.tar.bz2 /etc /root

詳情可參見<鳥哥的Linux私房菜>第九章 ->Linux檔案與檔案系統的壓縮與打包

鳥哥的Linux私房菜-基礎學習篇(第四版)高清完整書籤PDF版  下載見  http://www.linuxidc.com/Linux/2016-02/128220.htm

本文永久更新連結地址http://www.linuxidc.com/Linux/2016-07/133711.htm


IT145.com E-mail:sddin#qq.com