Linux基礎知識之壓縮命令

2021-09-20 19:25:37 字數 4155 閱讀 6730

在現代計算機體系中,任何操作都是建立在對資料的處理上,所以儲存是乙個十分重要的組成部分。但是不管技術發展成什麼樣,儲存總是會有上限,尤其是對於我們這些普通使用者來說,我們是不可能在每一次缺少儲存空間的時候就進行擴容。

隨著計算機系統的發展,人們開發出了壓縮這個東西。那麼壓縮是什麼呢?簡單來說,就是對一些有規律的資料進行規律化處理,來使其占用的空間變少。比如有乙個文字檔案,其內部內容是十個字母「a」,十個字母「b」,十個字母「c」,然後又是十個字母「a」...,就這樣重複了100遍,那麼此時的文字檔案的長度就是「(10+10+10)*100=3000」個字元,此時,如果我們使用最簡單的壓縮演算法,使用乙個變數「x」來代替10個「a」,使用變數「y」來代替10個「b」,使用變數「z」來代替10個「c」,在寫入文字的時候就可以這麼寫:先寫x、y、z分別代表的含義,然後再重複x、y、z這三個變數100遍,此時就能夠生成乙個大小為「10+10+10+3*100=330」個字元的檔案,當然這個大小是乙個近似值。此時我們可以看到相對於原先的「3000」個字元,現在的「330」個字元縮小了近10倍。這就叫壓縮過程,產生的檔案叫做壓縮檔案,原先的檔案叫做原始檔,原始檔和壓縮檔案的大小的比值叫做壓縮比。

壓縮工具:compress,相對的解壓縮工具:uncompress,壓縮後產生的檔案的副檔名字尾:.z

壓縮工具:gzip,相對的解壓縮工具:gunzip,壓縮後產生的檔案的副檔名字尾:.gz

壓縮工具:bzip2,相對的解壓縮工具:bunzip2,壓縮後產生的檔案的副檔名字尾:.bz2

壓縮工具:xz,相對的解壓縮工具:unxz,壓縮後產生的檔案的副檔名字尾:.xz

壓縮工具:zip,相對的解壓縮工具:unzip,壓縮後產生的檔案的副檔名字尾:.zip

其中壓縮工具:xz是目前壓縮比最高的工具

下面對以上提到的壓縮工具進行詳細的講解:

在往下看之前,我們可以通過「dd」命令來建立乙個大小為「30m」的文字檔案:

1

2

3

4

5

6

7

8

[root@localhostgzip]# dd if=/dev/zero of=test bs=30m count=1

記錄了1+0 的讀入

記錄了1+0 的寫出

31457280位元組(31 mb)已複製,0.0490481 秒,641 mb/秒

[root@localhostgzip]# ls -hl

總用量 30m

-rw-r--r--. 1 root root 30m 6月   7 16:45test

[root@localhostgzip]#

然後使用cp命令做出三個相同內容,不同名稱的檔案:

1

2

3

4

5

6

[root@localhost 20170607yasuo]# ls -hl

總用量 90m

-rw-r--r--. 1 root root 30m 6月   7 16:52 testbzip

-rw-r--r--. 1 root root 30m 6月   7 16:51 testgzip

-rw-r--r--. 1 root root 30m 6月   7 16:52 testxz

[root@localhost 20170607yasuo]#

有了這三個檔案,就可以分別使用以下命令進行壓縮(compress是乙個相當古老的 unix 檔案壓縮指令,所以這裡不再介紹):

gzip:

1

2

3

4

5

6

7

[root@localhost 20170607yasuo]# gzip testgzip

[root@localhost 20170607yasuo]# ls -hl

總用量 61m

-rw-r--r--. 1 root root 30m 6月   7 16:52 testbzip

-rw-r--r--. 1 root root 30k 6月   7 16:51 testgzip.gz

-rw-r--r--. 1 root root 30m 6月   7 16:52 testxz

[root@localhost 20170607yasuo]#

在這個例子中,我們可以看到原來的「testgzip」檔案占用30m的大小,現在只佔30k的大小

注意:在進行壓縮的時候,如果不對命令進行特殊的指定,則會刪除原始檔,如果想留下原始檔則需要使用「-c」選項

bzip2:

bzcat - decompresses files to stdout

常用選項:

舉例:1

2

3

4

5

6

7

[root@localhost 20170607yasuo]# bzip2 testbzip

[root@localhost 20170607yasuo]# ls -hl

總用量 31m

-rw-r--r--. 1 root root  50 6月   7 16:52 testbzip.bz2

-rw-r--r--. 1 root root 30k 6月   7 16:51 testgzip.gz

-rw-r--r--. 1 root root 30m 6月   7 16:52 testxz

[root@localhost 20170607yasuo]#

xz:舉例:

1

2

3

4

5

6

7

[root@localhost 20170607yasuo]# xz testxz

[root@localhost 20170607yasuo]# ls -hl

總用量 44k

-rw-r--r--. 1 root root   50 6月   7 16:52 testbzip.bz2

-rw-r--r--. 1 root root  30k 6月   7 16:51 testgzip.gz

-rw-r--r--. 1 root root 4.7k 6月   7 16:52 testxz.xz

[root@localhost 20170607yasuo]#

比較上面的三種壓縮後的檔案大小,可以發現「xz」這個命令的壓縮比最大,但是消耗時間也最長,所以在日常使用中,我們要根據自己的需要來選擇適合的壓縮命令

Linux之基礎知識

在此總結使用linux的時候,一些必須知道的基礎內容,記錄一下,加強記憶 一.linux 執行級別 執行級別就是作業系統當前正在執行的功能級別。這個級別從0到6 具有不同的功能。這些級別在 etc inittab檔案裡指定。這個檔案是init程式尋找的主要檔案,最先執行的服務是那些放在 etc rc...

Linux基礎知識和命令

ctrl alt f1 回到圖形化介面 ctrl alt f2 進入tty1 ctrl alt f3 進入tty2 dlc localhost date 顯示當前時間 root localhost dlc date 2020年 04月 30日 星期四 10 19 46 cst ls 列出當前目錄下檔...

基礎知識 Linux常見命令

預設列出當前目錄 ls option file ls命令引數 a 列出指定目錄下的所有檔案,包括隱藏檔案 l 長格式列表。如果輸出到終端,則所有檔案大小的總和將輸出到長清單前面的一行中 列印當前工作目錄的完整路徑名 將每個檔案的訪問和修改時間更新為當前時間。如果不是 c 會建立乙個新文件 touch...