天天看點

《調教指令行07》壓縮解壓(有64KB彩蛋)(初級)

原創:小姐姐味道(微信公衆号ID:xjjdog),歡迎分享,轉載請保留出處。任何不保留此聲明的轉載都是抄襲。

壓縮,是一件非常神奇的事情。

很久很久之前,就接觸過一些64KB大小的電影,你花半小時都看不完。事實上,這些動畫的真實容量是15GB,Warez組織把它壓縮了25萬倍。

你要是Windows系統,可以在這裡下載下傳體驗一下。但我們現在講的是Linux,很打臉是不是?

連結: https://pan.baidu.com/s/12YJQ4jsbtRr7RxoLpARTyQ提取碼: r7sp           

複制

壓縮是件神奇的事。它能大能小,能伸能縮,在現實中很難找到這樣的東西。

《調教指令行07》壓縮解壓(有64KB彩蛋)(初級)

為了減小傳輸檔案的大小,或者為了傳輸友善,一般都會開啟壓縮。linux下常見的壓縮檔案有tar、bzip2、zip、rar等,7z這種用的相對較少。壓縮之後的檔案,非常适合在網絡環境上傳輸。甚至,你可以認為iso檔案為一種特殊的壓縮方式。

.tar

使用tar指令壓縮或解壓

.bz2

使用bzip2指令操作

.gz

使用gzip指令操作

.zip

使用unzip指令解壓

.rar

使用unrar指令解壓

.Z

使用compress,uncompress

1、tar

《調教指令行07》壓縮解壓(有64KB彩蛋)(初級)

準備工作:使用下面的指令,複制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。十年架構,日百億流量,與你探讨高并發世界,給你不一樣的味道。