原創:小姐姐味道(微信公衆号ID:xjjdog),歡迎分享,轉載請保留出處。任何不保留此聲明的轉載都是抄襲。
壓縮,是一件非常神奇的事情。
很久很久之前,就接觸過一些64KB大小的電影,你花半小時都看不完。事實上,這些動畫的真實容量是15GB,Warez組織把它壓縮了25萬倍。
你要是Windows系統,可以在這裡下載下傳體驗一下。但我們現在講的是Linux,很打臉是不是?
連結: https://pan.baidu.com/s/12YJQ4jsbtRr7RxoLpARTyQ提取碼: r7sp
複制
壓縮是件神奇的事。它能大能小,能伸能縮,在現實中很難找到這樣的東西。
為了減小傳輸檔案的大小,或者為了傳輸友善,一般都會開啟壓縮。linux下常見的壓縮檔案有tar、bzip2、zip、rar等,7z這種用的相對較少。壓縮之後的檔案,非常适合在網絡環境上傳輸。甚至,你可以認為iso檔案為一種特殊的壓縮方式。
.tar
使用tar指令壓縮或解壓
.bz2
使用bzip2指令操作
.gz
使用gzip指令操作
.zip
使用unzip指令解壓
.rar
使用unrar指令解壓
.Z
使用compress,uncompress
1、tar
準備工作:使用下面的指令,複制1000個檔案。
cd ~
mkdir filescd files
seq 1000 | xargs -I {} cp /etc/group {}
複制
使用ls,就可以看到我們剛才建立的1000個檔案。接下來,我們使用壓縮指令将它打包成一個。
# 檢視1000個檔案的總大小[root@localhost files]# du -h .4.0M .# 切換到root目錄cd ~# 使用tar進行壓縮,壓縮後的檔案不到1MB[root@localhost ~]# tar cvf files.tar files[root@localhost ~]# du -h files.tar1012K files.tar# 使用gizp提高壓縮比,壓縮後的檔案隻有12KB[root@localhost ~]# gzip files.tar[root@localhost ~]# du -h files.tar.gz12K files.tar.gz
複制
tar和gzip一般是聯合使用的。tar指令提供了一種特殊的功能,就是可以在打包解包的同時調用其他的壓縮程式,比如:gzip,bzip2等。
下面的指令,與上面執行兩次指令後是等同的。是以,一般使用下面的方式進行操作。
[root@localhost ~]# tar cvfz files2.tar.gz files[root@localhost ~]# du -h files2.tar.gz12K files2.tar.gz
複制
與之對應的,就是解壓操作。我們隻需要改動指令行中的一個字母即可:
c
->
x
。但其實,參數
v
和
z
也是可以省略的。
[root@localhost ~]# tar xvfz files2.tar.gz
複制
我們更加常用的方式,是加上參數
C
,指定一個要解壓的目錄。比如下面的指令,把壓縮内容解壓到/opt目錄中。
[root@localhost ~]# tar xvfz files2.tar.gz -C /opt/
複制
那如果我僅僅想要看下壓縮檔案中包含哪些檔案呢?這就要使用參數
t
。
-
壓縮c
-
解壓x
-
檢視清單t
安裝其他的
我們來看一下常用的zip和rar解壓程式有沒有安裝。
[root@localhost ~]# which unzip/usr/bin/which: no unzip in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
[root@localhost ~]# which unrar/usr/bin/which: no unrar in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin)
複制
是以,我們的系統并沒有安裝這兩個應用。那我就使用centos的包管理工具
yum
安裝一下。java中的jar指令也是與zip類似的,可自行探索。
[root@localhost ~]# yum install -y zip unzip rar unrarLoaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.aliyun.com
...
複制
rar不能安裝成功,是以rar檔案并不能被解壓。沒關系,我們在後面的章節把它安裝上。
2、小結
本小節介紹了很多種字尾的壓縮檔案,但其實在Linux用的最多的隻有
.tar
和
tar.gz
,偶爾會有你從各個地方擷取的zip和rar檔案。
小實踐,在centos上安裝tomcat。
3、思考&擴充
1、 經過zip壓縮的檔案,再使用gzip壓縮,容量還會減少麼?
為了驗證這個過程,可以使用
dd
指令,生成一個
69MB
大小的随機檔案。
dd
指令也是個神奇哦。
[root@localhost ~]# dd if=/dev/urandom of=test bs=1M count=6969+0 records in69+0 records out72351744 bytes (72 MB) copied, 0.446161 s, 162 MB/s
[root@localhost ~]# du -h test69M test
複制
是以,回到文章最上面,我們可以随機生成一批檔案,讓壓縮效果更有意義一點。
seq 1000 | xargs -i dd if=/dev/zero of={}.xjj bs=1k count=256
複制
2、如果已經有了檔案,tar指令是如何做到強制覆寫的?
End
壓縮小能手,看片不用愁。快速傳知識,幸福在心頭。
作者簡介:小姐姐味道 (xjjdog),一個不允許程式員走彎路的公衆号。聚焦基礎架構和Linux。十年架構,日百億流量,與你探讨高并發世界,給你不一樣的味道。