Linux學習記錄 檔案壓縮

2021-06-20 17:05:55 字數 4220 閱讀 3663

對於機器來說只能識別0,1,我們如果讓機器執行必須輸入機器能夠識別的語言,可是機器語言不利於人們使用可理解,因此科學家就開發出人類能看的懂的程式語言,然後再創造出「編譯器」將程式語言轉換為機器語言。

我們都知道1byte=8bit. 比如,對於這1這個數字來說可以表示為0000 0001,前7個bit都是「空的」只有最後乙個bit,有實際意義。壓縮的原理就是通過複雜的計算方式將這個「空的「內容盡可能的去掉以減少檔案的儲存空間

linux常見的壓縮命令式gzip,bzip2,這些壓縮命令都是針對於乙個檔案進行壓縮,因此當要壓縮很多檔案時,就需要先進行打包(tar)然後再進行壓縮。

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

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

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

*.tar:打包檔案,並未進行壓縮

*.tar.gz:打包檔案並以gzip程式壓縮打包檔案

*tar.bz2: 打包檔案並以bzip2程式壓縮打包檔案

gzip可以解開compress,zip,gzip等軟體壓縮的檔案

語法:gzip[cdtv#] 檔名

選項與引數:

-c: 將壓縮資料輸出到螢幕上

-d:解壓縮

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

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

-#:壓縮等級,-1最快,-9最慢,預設值時-6

舉例1:壓縮檔案

[root@bogon ~]# cp /etc/man.config /tmp/man.config

[root@bogon ~]# gzip -v /tmp/man.config

/tmp/man.config: 56.1% -- replaced with /tmp/man.config.gz

[root@bogon ~]# ll /etc/man.config /tmp/man.config.gz

-rw-r--r-- 1 root root 4617 2012-05-30 /etc/man.config

-rw-r--r-- 1 root root 2057 02-27 22:26 /tmp/man.config.gz

舉例2:解壓縮

[root@bogon ~]# gzip -d /tmp/man.config.gz 

[root@bogon ~]# ll /tmp/man.config

-rw-r--r-- 1 root root 4617 02-27 22:26 /tmp/man.config

舉例3:資料流重定向(壓縮後保留原來檔案)

[root@bogon ~]# gzip -c /tmp/man.config > /tmp/man.config.gz 

[root@bogon ~]# ll /tmp/man.config /tmp/man.config.gz

-rw-r--r-- 1 root root 4617 02-27 22:26 /tmp/man.config

-rw-r--r-- 1 root root 2057 02-27 22:31 /tmp/man.config.gz

可以zcat來讀取由gzip壓縮的檔案

[root@bogon ~]# zcat /tmp/man.config.gz

bzip2的壓縮比比gzip還要好

語法:bzip2[-cdkzv#] 檔名

選項與引數:

-c:將壓縮資料輸出到螢幕上

-d:解壓縮

-k:保留原始檔案

-z:壓縮

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

-#:壓縮等級,-1最快,-9最慢

可以bzcat來讀取由bzip2壓縮的檔案

語法:

打包與壓縮:tar [-j|-z] [-cv] [-f 新建的檔名] filename

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

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

選項與引數:

-c:新建打包檔案

-t:檢視打包檔案內容

-x:加壓縮打包檔案

-j:使用bzip2進行壓縮/解壓縮

-z:使用該gzip進行壓縮/解壓縮

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

-f filename:需要被壓縮成(解壓縮)的檔名

-c:解壓縮到的目錄

-p:保留備份資料的原有許可權和屬性

-p:保留絕對路徑

--exclude=file:在壓縮中不將file打包

--newer-mtime=」時間」:打包比指定時間新的檔案

舉例1:對檔案打包壓縮

[root@localhost ~]# tar -jcv -f /root/etc.tar.bz2 /etc

……壓縮檔案資訊

[root@localhost ~]# tar -zcv -f /root/etc.tar.gz /etc

……壓縮檔案資訊

[root@localhost ~]# ll --block-size=m /root/etc.tar.bz2 /root/etc.tar.gz ;du -sm /etc

-rw-r--r-- 1 root root 10m 02-28 10:42 /root/etc.tar.bz2

-rw-r--r-- 1 root root 16m 02-28 10:43 /root/etc.tar.gz

179 /etc

可以看到壓縮後,檔案小了很多

舉例2:檢視打包壓縮檔案內容

[root@localhost ~]# tar -ztv -f /root/etc.tar.gz |grep 'shadow*'

-r-------- root/root 1352 2014-02-14 10:36:09 etc/shadow

-r-------- root/root 657 2014-02-14 10:36:09 etc/gshadow

-r-------- root/root 648 2014-02-14 10:36:09 etc/gshadow-

-r-------- root/root 1352 2014-02-14 10:36:09 etc/shadow-

舉例3:解壓縮

[root@localhost ~]# tar -jxv -f /root/etc.tar.bz2 -c /tmp

……解壓縮檔案資訊

[root@localhost ~]# ll -d /tmp/etc/

drwxr-xr-x 114 root root 12288 02-28 10:15 /tmp/etc/

當不使用絕對路徑壓縮時,解壓後則解壓到指定路徑下,如壓縮檔案/etc,解壓後直接放在了/tmp/etc

使用絕對路徑壓縮,則在解壓縮後可以使用檔案的絕對路徑解壓縮到檔案的原來目錄

舉例4:打包目錄,但排除一些檔案

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

……壓縮檔案資訊

[root@localhost ~]# ll /root/system.tar.bz2

-rw-r--r-- 1 root root 10531659 02-28 11:19 /root/system.tar.bz2

Linux 學習記錄二 檔案的打包壓縮

和 window不同,在linux壓縮檔案需要注意的是,壓縮後的檔案會把原始檔給替代,無論是gzip bzip2 xz 均不支援壓縮目錄,要達到壓縮目錄的目的,需要用到tar指令。gzip 壓縮 gzip file1 壓縮乙個叫做 file1 的檔案 gzip 9 file1 最大程度壓縮 gunz...

Linux檔案壓縮

linux檔案壓縮 1.壓縮成tar檔案 tar命令可以用來壓縮打包單檔案 多個檔案 單個目錄 多個目錄。常用格式 單個檔案壓縮打包 tar czvf my.tar file1 多個檔案壓縮打包 tar czvf my.tar file1 file2,單個目錄壓縮打包 tar czvf my.tar...

Linux學習之檔案壓縮與打包

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