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

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


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

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

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

<code>鏈接: https://pan.baidu.com/s/12YJQ4jsbtRr7RxoLpARTyQ提取碼: r7sp/<code>

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

《調教命令行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個文件。

<code>cd ~
mkdir filescd files
seq 1000 | xargs -I {} cp /etc/group {}/<code>

使用ls,就可以看到我們剛才創建的1000個文件。接下來,我們使用壓縮命令將它打包成一個。

<code># 查看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/<code>

tar和gzip一般是聯合使用的。tar命令提供了一種特殊的功能,就是可以在打包解包的同時調用其他的壓縮程序,比如:gzip,bzip2等。

下面的命令,與上面執行兩次命令後是等同的。所以,一般使用下面的方式進行操作。

<code>[root@localhost ~]# tar cvfz files2.tar.gz files[root@localhost ~]# du -h files2.tar.gz12K    files2.tar.gz/<code>

與之對應的,就是解壓操作。我們只需要改動命令行中的一個字母即可:c->x。但其實,參數v和z也是可以省略的。

<code>[root@localhost ~]# tar xvfz files2.tar.gz/<code>

我們更加常用的方式,是加上參數C,指定一個要解壓的目錄。比如下面的命令,把壓縮內容解壓到/opt目錄中。

<code>[root@localhost ~]# tar xvfz files2.tar.gz -C /opt//<code>

那如果我僅僅想要看下壓縮文件中包含哪些文件呢?這就要使用參數t。

  • c 壓縮
  • x 解壓
  • t 查看列表

安裝其他的

我們來看一下常用的zip和rar解壓程序有沒有安裝。

<code>[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)/<code>

所以,我們的系統並沒有安裝這兩個應用。那我就使用centos的包管理工具yum安裝一下。java中的jar命令也是與zip類似的,可自行探索。

<code>[root@localhost ~]# yum install -y zip unzip rar unrarLoaded plugins: fastestmirrorLoading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* extras: mirrors.tuna.tsinghua.edu.cn
* updates: mirrors.aliyun.com
.../<code>

rar不能安裝成功,所以rar文件並不能被解壓。沒關係,我們在後面的章節把它安裝上。

2、小結

本小節介紹了很多種後綴的壓縮文件,但其實在Linux用的最多的只有.tar和tar.gz,偶爾會有你從各個地方獲取的zip和rar文件。

小實踐,在centos上安裝tomcat。

3、思考&擴展

1、 經過zip壓縮的文件,再使用gzip壓縮,容量還會減少麼?

為了驗證這個過程,可以使用dd命令,生成一個69MB大小的隨機文件。dd命令也是個神奇哦。

<code>[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/<code>

所以,回到文章最上面,我們可以隨機生成一批文件,讓壓縮效果更有意義一點。

<code>seq 1000 | xargs -i dd if=/dev/zero of={}.xjj bs=1k count=256/<code>

2、如果已經有了文件,tar命令是如何做到強制覆蓋的?

End

壓縮小能手,看片不用愁。快速傳知識,幸福在心頭。

作者簡介:小姐姐味道 (xjjdog),一個不允許程序員走彎路的公眾號。聚焦基礎架構和Linux。十年架構,日百億流量,與你探討高併發世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,進一步交流。


分享到:


相關文章: