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

2021-07-11 09:46:58 字數 4356 閱讀 1101

進來在學習linux了,不過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已經非常老舊了,不過學習練練手還是可以的。現在的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是使用最廣的壓縮命令了。目前gzip可以解壓compress、zip與gzip等壓縮軟體所壓縮的檔案。接下來看下語法:

[root@www ~]#gzip [-cdtv#] 檔名

[root@www ~]#zcat 檔名.gz

引數:-c : 將壓縮的資料輸出到螢幕上,可通過資料流重定向來處理;

-d : 解壓縮需要用到的引數;

-t : 可用來校驗乙個壓縮檔案的一致性,看看檔案是否有錯誤;

-v : 顯示原檔案/壓縮檔案的壓縮比等資訊;

-# : 壓縮等級,-1最快,但其壓縮比較差,-9最慢,但壓縮比最好,預設-6.

gzip壓縮檔案

zcat讀取壓縮檔案內容

gzip解壓縮檔案

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

[root@www ~]#bzip2[-cdkzv#] 檔名

[root@www ~]#bzcat 檔名.bz2

引數:-c : 將壓縮的資料輸出到螢幕上;

-d : 解壓縮需要用到的引數;

-k : 保留原檔案,而不會刪除原始的檔案;

-z : 壓縮的引數;

-v : 顯示原檔案/壓縮檔案的壓縮比等資訊;

-# : 壓縮等級,-1最快,但其壓縮比較差,-9最慢,但壓縮比最好.

雖然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。

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

[root@www ~]#tar -jcv -f /root/system.tar.bz2 --exclude=/root/etc* \

>--exclude=/root/system.tar.bz2 /etc /root

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

檔案與檔案系統壓縮

目錄 打包命令 什麼是檔案壓縮呢?我們稍微談一談它的原理,目前我們使用的計算機系統中都是使用所謂的位元組單位來計量。不過,事實上,計算機最小的計量單位應該是bit才對,此外,我們也知道 1位元 8位元組 1byte 8bit 但是如果今天我們只是記錄乙個數字,即1這個數字,它會如何記錄?假設乙個位元...

檔案與檔案系統的壓縮

首先我們看一下linux下面常見的壓縮檔案的拓展名。z compress程式壓縮的檔案 zip zip程式壓縮的檔案 gz gzip程式壓縮的檔案 bz2 bzip2程式壓縮的檔案 xz xz程式壓縮的檔案 tar tar程式打包的資料,並沒有壓縮 tar.gz tar程式打包的資料,並且經過gzi...

檔案與檔案系統的壓縮

由於我們記錄數字是 1 考慮計算機所謂的二進位制喔,如此一來,1 會在最右邊佔據 1 個 bit 而其他的 7 個 bits 將會自動的被填上 0 其實在這樣的例子中,那 7 個 bits 應該是 空的 才對!不過,為了要滿足目前我們的作業系統資料的訪問,所以就會將該資料轉為 byte 的型態來記錄...