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

2021-09-14 08:48:45 字數 3454 閱讀 6374

*.z:compress程式壓縮的檔案

*.gz:gzip程式壓縮的檔案

*.bz2:bzip2程式壓縮的檔案

*.tar:tar程式打包的資料,並沒有壓縮過

*.tar.gz:tar程式打包的檔案,其中經過gzip的壓縮

*.tar.bz2:tar程式打包的檔案,其中經過bzip2的壓縮

常見的壓縮命令就是gzip與bzip2,至於compress已經不再流行了。

從壓縮效果上來看,compress < gzip < bzip2

命令格式

gzip [-cdtv#] filename

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

-d:解壓縮的引數

-t:可以用來檢驗乙個壓縮檔案的一致性,看看檔案有無錯誤

-v:可以顯示出原始檔/壓縮檔案的壓縮比等資訊

-k:保留原始檔

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

示例

# 新建了乙個testfile的文件

# 壓縮命令

gzip -v testfile.txt

# 檢視壓縮裡面的內容

zcat testfile.txt.gz

# 解壓縮

注意:壓縮的時候,會將原始檔整個替換成壓縮檔案,原始檔就不在了。解壓縮也是同個道理。避免這種情況可以使用『-k』的選項,或者使用重定向。

gzip -k file.txt

gzip -9 -c file.txt > file.txt.gz

其中-9表示壓縮等級,而-c表示重定向,』>'配合重定向

其實bzip2的壓縮命令和gzip是幾乎一樣的,但是效果要優於gzip

命令格式

bzip2 [-cdkzv#] filename

bzcat filename.bz2

-c:將壓縮過程中產生的資料輸出到螢幕上

-d:解壓縮的引數

-k:保留原檔案

-z:壓縮的引數

-v:顯示原始檔/壓縮檔案的壓縮比

-#:與gzip同理的壓縮等級

示例:

# 壓縮

bzip2 -zk file.txt

# 檢視壓縮內容

bzcat file.txt.bz2

# 解壓縮

bzip2 -d file.txt.bz2

(由於指令內容和gzip沒有太大差別,所以這裡就不貼圖了)

需要注意的是:gzip,bzip2都是只能針對單一乙個檔案進行壓縮,不能對目錄進行壓縮如下圖所示:

會提示輸入的並不是乙個檔案,所以需要先打包,再壓縮

命令格式

# 打包與壓縮

tar [-j][-z][cv] [-f 新建的檔名] filename

# 檢視檔名

tar [-j|-z][tv] [-f 新建的檔名]

# 解壓縮

tar [-j|-z][xv] [-f 新建的檔名] [-c 目錄]

-c:新建打包檔案,可搭配-v來檢視過程中被打包的檔名

-t:檢視打包檔案愛你的內容含有哪些檔名,重點在看檔名

-x:解打包或解壓縮,可以搭配-c在特定的目錄中解開

-j:通過bzip2的支援進行壓縮/解壓縮(此時檔名字尾最好是 .tar.bz2)

-z:通過gzip的支援進行壓縮/解壓縮(此時檔名字尾最好是 .tar.gz)

-v:在壓縮/解壓縮的過程中,將正在處理的檔名顯示出來

-f filename:-f 後面要接被處理的檔名,建議-f 單獨寫成乙個引數

-c 目錄:這個引數在解壓縮時,指定目錄進行解壓縮

-p:保留備份資料的原本許可權和屬性(常用於備份重要的配置檔案)

其實用法就是這樣子

壓縮:tar -jcv -f filename.tar.bz2 被壓縮的檔案或目錄

查詢:tar -jtv -f filename.tar.bz2

解壓縮:tar -jxv -f filename.tar.bz2 -c 欲解壓縮的目錄

tar -jtv 壓縮包名.tar.bz2 | grep '要找的檔名'
找到之後,單獨解壓這個檔案。解壓的時候還是會有目錄的路徑,不是說就解壓出乙個檔案,而是解壓出乙個資料夾,裡面只含這個檔案。(當然,多層資料夾就有多層目錄)

tar -jxv -f 壓縮包名.tar.bz2  路徑/待解開檔名
如下圖所示:

tar -jcv -f 壓縮包名稱.tar.bz2 被壓縮檔案/資料夾 --exclude="路徑/不參與壓縮的檔案"

``### 關於基本名稱

tarfile:僅打包而已

tar -cv -f file.tar

tarball(tar球)
tar -jcv -f file.tar.bz2

### 完整備份工具dump

可以用於備份整個檔案系統,並且可以增量備份。具體可以檢視man dump。這裡不做詳細介紹

### dd

dd可以讀取磁碟裝置的內容(幾乎是直接讀取扇區),然後將整個裝置備份成乙個檔案。

命令格式:

dd if=「input file」 of=「output file」 bs="block size"count=「number」

-if:表示input file

-of:表示output file

-bs:表示規劃的乙個block大小,預設微512bytes

-count:表示多少個bs的意思

示例
df -h

dd if=/dev/hdc of=/tmp/mbr.back

檔案與檔案系統壓縮

目錄 打包命令 什麼是檔案壓縮呢?我們稍微談一談它的原理,目前我們使用的計算機系統中都是使用所謂的位元組單位來計量。不過,事實上,計算機最小的計量單位應該是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 的型態來記錄...