對(duì)于機(jī)器來說只能識(shí)別0,1,我們?nèi)绻寵C(jī)器運(yùn)行必須輸入機(jī)器能夠識(shí)別的語言,可是機(jī)器語言不利于人們使用可理解,因此科學(xué)家就開發(fā)出人類能看的懂的程序語言,然后再創(chuàng)造出“編譯器”將程序語言轉(zhuǎn)換為機(jī)器語言。
我們都知道1 byte=8 bit. 比如,對(duì)于這1這個(gè)數(shù)字來說可以表示為0000 0001,前7個(gè) bit 都是“空的”只有最后一個(gè) bit,有實(shí)際意義。壓縮的原理就是通過復(fù)雜的計(jì)算方式將這個(gè)“空的“內(nèi)容盡可能的去掉以減少文件的存儲(chǔ)空間
Linux 常見的壓縮命令式 gzip,bzip2,這些壓縮命令都是針對(duì)于一個(gè)文件進(jìn)行壓縮,因此當(dāng)要壓縮很多文件時(shí),就需要先進(jìn)行打包(tar)然后再進(jìn)行壓縮。
.Z :compress 程序壓縮的文件
.gz:gzip 程序壓縮的文件
.bz2:bzip2程序壓縮的文件
.tar:打包文件,并未進(jìn)行壓縮
.tar.gz:打包文件并以 gzip 程序壓縮打包文件
tar.bz2: 打包文件并以 bzip2程序壓縮打包文件
gzip 可以解開 compress,zip,gzip 等軟件壓縮的文件
語法:gzip[cdtv#] 文件名
選項(xiàng)與參數(shù):
-c: 將壓縮數(shù)據(jù)輸出到屏幕上
-d:解壓縮
-t:可以檢驗(yàn)一個(gè)壓縮文件的一致性,看文件有無錯(cuò)誤
-v:顯示源文件/壓縮文件的壓縮比等信息
-#:壓縮等級(jí),-1最快,-9最慢,默認(rèn)值時(shí)-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:數(shù)據(jù)流重定向(壓縮后保留原來文件)
[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#] 文件名
選項(xiàng)與參數(shù):
-c:將壓縮數(shù)據(jù)輸出到屏幕上
-d:解壓縮
-k:保留原始文件
-z:壓縮
-v:顯示源文件/壓縮文件的壓縮比等信息
-#:壓縮等級(jí),-1最快,-9最慢
可以 bzcat 來讀取由 bzip2壓縮的文件
語法:
打包與壓縮:tar [-j|-z] [-cv] [-f 新建的文件名] filename
查看文件名:tar [-j|-z] [-tv] [-f 新建的文件名]
解壓縮:tar [-j|-z] [-xv] [-f 新建的文件名] [-C 目錄]
選項(xiàng)與參數(shù):
-c:新建打包文件
-t:查看打包文件內(nèi)容
-x:加壓縮打包文件
-j:使用 bzip2進(jìn)行壓縮/解壓縮
-z:使用該 gzip 進(jìn)行壓縮/解壓縮
-v:在壓縮過程中,將正在處理的文件名顯示出來
-f filename:需要被壓縮成(解壓縮)的文件名
-C:解壓縮到的目錄
-p:保留備份數(shù)據(jù)的原有權(quán)限和屬性
-P:保留絕對(duì)路徑
--exclude=File:在壓縮中不將 FILE 打包
--newer-mtime=”時(shí)間”:打包比指定時(shí)間新的文件
舉例1:對(duì)文件打包壓縮
[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:查看打包壓縮文件內(nèi)容
[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/
當(dāng)不使用絕對(duì)路徑壓縮時(shí),解壓后則解壓到指定路徑下,如壓縮文件/etc,解壓后直接放在了/tmp/etc 使用絕對(duì)路徑壓縮,則在解壓縮后可以使用文件的絕對(duì)路徑解壓縮到文件的原來目錄
舉例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