Linux之檔案壓縮與打包詳解

2021-12-30 01:57:57 字數 4353 閱讀 7397

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

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

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 進行檢視 壓縮檔案的內容

現在將上述壓縮檔案解壓縮

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

利用重定向保留原始檔和壓縮檔案

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

[root @localhost ~]#bzip2 [-cdtv#] filename

[root @localhost ~]#bzcap filename.bz2

引數解析:

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

-d:解壓縮引數

-t: 用來檢查乙個壓縮檔案的一致性,檢視檔案有無錯誤

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

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

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

[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 檔案解壓縮的位置為 /tmpa.那如果只是想解壓壓縮檔案中的某乙個檔案呢?

使用 -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.打包某個目錄,但是不包含該目錄下的某些檔案

Linux學習之檔案壓縮與打包

1.gzip 檔案壓縮與解壓縮 gzip filename 壓縮後不儲存原始檔 gzip c filename filename 壓縮後儲存原始檔 gunzip 檔案解壓縮 gunzip filename 解壓縮後不儲存原始檔 gunzip c filename filename 解壓縮後儲存原始檔...

Linux學習之檔案打包與壓縮

在講 linux 上的壓縮工具之前,有必要先了解一下常見常用的壓縮包檔案格式。在 windows 上最常見的不外乎這兩種 zip,7z字尾的壓縮檔案。而在 linux 上面常見的格式除了以上兩種外,還有.rar,gz,xz,bz2,tar,tar.gz,tar.xz,tar.bz2,簡單介紹如下 檔...

Linux 檔案壓縮與打包

通過壓縮演算法將檔案的體積減小,同時將多個檔案合併在一起。將多個檔案或者目錄合併成乙個檔案。z compress程式壓縮檔案 gz gzip程式壓縮檔案 bz2 bzip2程式壓縮檔案 tar tare程式打包的軟體,並未壓縮 tar.gz tar打包的檔案,使用gzipo壓縮 tar.bz2 ta...