文件與文件系統壓縮

在Linux下面有至關多的壓縮命令能夠運行,這些壓縮命令可讓咱們更方便地從網絡上面下載容量較大的文件。此外,咱們知道在Linux下面,擴展名沒有什麼特殊的意義。 不過,針對這些壓縮命令所產生的壓縮文件,爲了方便記憶,仍是會有一些特殊的命名方式,就讓咱們來看看吧!shell

文件壓縮

什麼是文件壓縮呢?咱們稍微談一談它的原理,目前咱們使用的計算機系統中都是使用所謂的字節單位來計量。不過,事實上,計算機最小的計量單位應該是bit纔對,此外,咱們也知道 1比特=8字節(1Byte=8bit),可是若是今天咱們只是記錄一個數字,即1這個數字,它會如何記錄?假設一個字節能夠當作下面的模樣:windows

因爲 1Byte=8bit,因此每一個字節當中會有8個空格,而每一個空格只能夠是0、1網絡

因爲咱們記錄的數字是1,考慮計算機所謂的二進制,如此一來,1會在最右邊佔據1個位,而其餘的7個位將會自動地被填上0.以下圖所示less

你看看,其實在這樣的例子中,那7個位應該是空的纔對。不過,爲了要知足目前咱們的操做系統數據的讀寫,因此就會將該數據轉爲字節的形式來記錄。而一些聰明的計算機工程師就利用一些複雜的計算方式,將這些沒有使用到的空間【丟】出來,以讓文件佔用的空間變小,這就是壓縮的技術。
另外一種壓縮技術也頗有趣,它是將重複的數據進行統計記錄。舉例來講,若是你的數據爲【111······】公有100個1時,那麼壓縮技術會記錄爲【100個1】而不是真的有100個1的位存在。這樣也可以精簡文件記錄的容量,很是有趣吧!
簡單地說,你能夠將它想成,其實文件裏面有至關多的空間存在,並非徹底填滿的,而壓縮技術就是將這些空間填滿,以讓整個文件佔用的容量降低。不過,這些壓縮過的文件並沒有法直接被咱們的操做系統所使用,所以,若要使用這些被壓縮過的文件數據,則必須將它還原回未壓縮前的模樣,那就是所謂的解壓縮。而至於壓縮後與壓縮的文件所佔用的磁盤空間大小,就能夠被稱爲是壓縮比
這個壓縮與解壓縮的操做有什麼好處呢?
1.最大的好處就是壓縮過的文件容量變小了,因此你的硬盤無形之中就能夠容納更多的數據。
2.此外,在一些網絡數據的傳輸中,也會因爲數據量的下降,好讓網絡帶寬能夠用來作更多的工做,而不是老卡在一些大型文件傳輸上面。測試

Linux系統常見壓縮命令

在Linux的環境中,壓縮文件的擴展名大可能是: *.tar、*.tar.gz、*.gz、*.Z、*.bz二、*.xz。爲何會有這樣的擴展名?不是說Linux的擴展名沒有什麼做用嗎?
這是由於Linux支持的壓縮命令很是多,且不一樣的命令所用的壓縮技術並不相同,固然彼此之間可能就沒法互通/解壓縮文件。因此,當你下載到某個文件時,天然就須要知道該文件是由哪一種壓縮命令所製做出來的,好用來對照對照着解壓縮,也就是說,雖然Linux文件的屬性基本上是與文件名沒有絕對關係的,可是爲了幫助咱們人類小小的腦殼,因此適當的擴展名仍是必要的,下面咱們就列出幾個常見的壓縮文件擴展名:操作系統

*.gz         gzip程序壓縮的文件
*.bz2        bzip2程序壓縮的文件
*.xz         xz程序壓縮的文件
*.zip        zip程序壓縮的文件
*.Z          compress程序壓縮的文件
*.tar        tar程序打包的文件,並無壓縮過
*.tar.gz     tar程序打包的文件,而且通過gzip的壓縮
*.tar.bz2    tar程序打包的文件,而且通過bzip2的壓縮
*.tar.xz     tar程序打包的文件,而且通過xz的壓縮

Linux常見的壓縮命令就是gzip、bzip2以及最新的xz,至於compress已經不流行了。爲了支持windows常見的zip,其實Linux也早就有zip命令了。gzip是由GNU計劃所開發出來的壓縮命令,該命令支持已經替換了compress。後臺GNU又開發出了bzip2及xz這幾個壓縮比更好的壓縮命令。不過,這些命令一般僅能針對一個文件來壓縮與解壓縮,如此一來,每次壓縮與解壓縮都要一大堆文件,豈不煩人?此時,這個所謂的【打包軟件,tar】就顯得很重要。
這個tar能夠將不少文件打包成一個文件,甚至是目錄也能夠這麼玩。不過,單純的tar功能僅僅是打包而已,即將不少文件結合爲一個文件,事實上,它並無提供壓縮的功能,後臺,GNU計劃中,將整個tar與壓縮的功能結合在一塊兒,如此一來,提供用戶更方便且更強大的壓縮與打包功能,下面咱們就來談一談這些在Linux下面基本的壓縮命令。命令行

gzip

gzip能夠說是應用最廣的壓縮命令了,目前gzip能夠解開compress、zip和gzip等軟件所壓縮的文件,至於gzip所創建的壓縮文件爲*.gz,讓咱們來看看這個命令的語法:3d

gzip [-cdtvn] 文件名
選項與參數:
-c: 將壓縮的數據輸出到屏幕上,可經過數據流重定向來處理;
-d: 解壓縮的參數;
-t: 能夠用來檢驗一個壓縮文件的一致性,看看文件有無錯誤;
-v: 能夠顯示出原文件/壓縮文件的壓縮比等信息;
-n: n爲數字的意思,表明壓縮等級,-1最快,但壓縮比最差,-9最慢,可是壓縮比最好,默認是-6

示例1:壓縮文件(gzip -v 文件名)code

示例2:解壓縮文件(gzip -d 文件名)

示例3:按照指定壓縮比壓縮(gzip -9 文件名)

示例4:查看壓縮文件的內容(zcat 文件名)

示例5:壓縮爲指定文件名(gzip -c 文件名 > 指定文件名)

當你使用gzip進行壓縮時,在默認的狀態下本來的文件會被壓縮成爲.gz後綴的文件,源文件就不存在了,這點與通常習慣使用Windows作壓縮的朋友所熟悉的狀況不一樣,要注意。cat/more/less可使用不一樣的方式來讀取純文本文件,那麼zcat/zmore/zless則能夠對應於cat/more/less的方式來讀取純文件文件被壓縮後的壓縮文件。

bzip2

若說gzip是爲了替換compress並提供更好的壓縮比而成立的,那麼bzip2則是爲了替換gzip並提供更加的壓縮比而來。bzip2真是很不錯的東西,這玩意的壓縮比居然比gzip還要好,至於bzip2的用法幾乎與gzip相同,看看下面的用法吧!

bzip2 [-cdkzvn] 文件名
選項與參數:
-c: 將壓縮的數據輸出到屏幕上,可經過數據流重定向來處理;
-d: 解壓縮的參數;
-k: 保留原始文件,而不是刪除原始文件;
-z: 壓縮的參數(默認值,能夠不加);
-v: 能夠顯示出原文件/壓縮文件的壓縮比等信息;
-n: n爲數字的意思,表明壓縮等級,-1最快,但壓縮比最差,-9最慢,可是壓縮比最好,默認是-6

示例:

bzip2 -v 待壓縮文件名
bzip2 -d 壓縮後的文件名
bzip2 -9 -c 待壓縮的文件名 > 自定義壓縮文件名

xz

雖然bzip2已經具備很棒的壓縮比,不過顯然某些自由軟件開發者還不知足,所以後來還推出了xz這個壓縮比更高的軟件。這個軟件的用法也跟gzip/bzip2幾乎如出一轍,那咱們就來看一看。

xz [-cdtlkn] 文件名
選項與參數:
-c: 將壓縮的數據輸出到屏幕上,可經過數據流重定向來處理;
-d: 解壓縮的參數;
-k: 保留原始文件,而不是刪除原始文件;
-l: 列出壓縮文件的相關信息;
-t: 測試壓縮文件的完整性,看看有沒有錯誤;
-z: 壓縮的參數(默認值,能夠不加);
-n: n爲數字的意思,表明壓縮等級,-1最快,但壓縮比最差,-9最慢,可是壓縮比最好,默認是-6

示例:

xz -v 待壓縮的文件名
xz -l 壓縮後的文件名
xz -d 壓縮後的文件名
xz -k 待壓縮的文件名

打包命令

前面談到的命令大多僅能針對單一文件來進行壓縮,雖然gzip、bzip二、xz也可以針對目錄來進行壓縮,不過,這幾個命令對目錄的壓縮指的是將目錄內的全部文件【分別】進行壓縮的操做。而不像在Windows的系統,可使用相似WinRAR這一類的壓縮軟件來將好多數據包成一個文件的樣式。
這種將多個文件或目錄包成一個大文件的命令功能,咱們能夠稱它是一種打包命令,那Linux有沒有這種打包命令?有,那就是大名鼎鼎的tar,tar能夠將多個目錄或文件打包成一個大文件,同時還能夠經過gzip、bzip二、xz的支持,將該文件同時進行壓縮。更有趣的是,因爲tar的使用太普遍了,目前Windows的WinRAR也支持.tar.gz文件名的解壓縮。

tar

tar的選項與參數特別多,咱們只講幾個經常使用的選項,更多選項您能夠自行man tar查詢。

tar [-z|-j|-J] [cv] [-f 待創建的新文件名] filename... <== 打包與壓縮。
tar [-z|-j|-J] [cv] [-f 既有的tar文件名]  <== 查看文件名
tar [-z|-j|-J] [xv] [-f 既有的tar文件名]  <== 解壓縮
選項與參數:
-c: 創建打包文件,可搭配-v來查看過程當中被打包的文件名(filename);
-t: 查看打包文件的內容含有那些文件名,重點在查看【文件名】;
-x: 解包或解壓縮功能,能夠搭配-C(大寫)在特定目錄解壓,特別留意的是,-c、-t、-x不可同時出如今一串命令行中;
-z: 經過gzip的支持進行壓縮/解壓縮: 此時文件名最好爲*.tar.gz;
-j: 經過bzip2的支持進行壓縮/解壓縮:此時文件名最好爲*.tar.bz2;
-J: 經過xz的支持進行壓縮/解壓縮: 此時文件名最好爲 *.tar.xz,特別留意,-z、-j、-J不能夠同時出如今一串命令行中;
-v: 在壓縮/解壓縮的過程當中,將正在處理的文件名顯示出來;
-f filename: -f後面要馬上接要被處理的文件名,建議-f單獨寫一個選項(比較不會忘記)。
-C 目錄: 這個選項用在解壓縮,若要在特定目錄解壓縮,可使用這個選項
-p(小寫): 保留備份數據的本來權限與屬性,經常使用於備份(-c)重要的配置文件;
-P(大寫): 保留絕對路徑,亦即容許備份數據中含有根目錄存在之意

其實最簡單的使用tar就只要記住下面的命令便可:

  • 壓縮: tar -jcv -f filename.tar.bz2 要被壓縮的文件或目錄名稱;
  • 查詢: tar -jtv -f filename.tar.bz2
  • 解壓縮: tar -jxv -f filename.tar.bz2 -C 欲解壓縮的目錄

示例:

tar -zcvf 文件名.tar.gz 文件名(目錄)

tar -ztvf 文件名.tar.gz

tar -zxvf 文件名.tar.gz

資料:
鳥哥的Linux私房菜(第四版)

相關文章
相關標籤/搜索