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

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

《調教命令行01》選Linux發行版,就像挑女友
《調教命令行02》準備一個冰清玉潔的Linux系統
《調教命令行03》認識一下,感受不是說來就來的
《調教命令行04》觸碰Linux的每一個角落(長文)
《調教命令行05》對文件的基本操做
《調教命令行06》條條大道通羅馬,羅馬羅馬你在哪(學習技巧)linux

壓縮,是一件很是神奇的事情。程序員

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

你要是Windows系統,能夠在這裏下載體驗一下。但咱們如今講的是Linux,很打臉是否是?tomcat

連接: https://pan.baidu.com/s/12YJQ4jsbtRr7RxoLpARTyQ 
提取碼: r7sp
複製代碼

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

爲了減少傳輸文件的大小,或者爲了傳輸方便,通常都會開啓壓縮。linux下常見的壓縮文件有tar、bzip二、zip、rar等,7z這種用的相對較少。壓縮以後的文件,很是適合在網絡環境上傳輸。甚至,你能夠認爲iso文件爲一種特殊的壓縮方式。微信

.tar 使用tar命令壓縮或解壓 .bz2 使用bzip2命令操做 .gz 使用gzip命令操做 .zip 使用unzip命令解壓 .rar 使用unrar命令解壓 .Z 使用compress,uncompress網絡

一、tar

準備工做:使用下面的命令,複製1000個文件。架構

cd ~
mkdir files
cd 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.tar
1012K	files.tar

# 使用gizp提升壓縮比,壓縮後的文件只有12KB
[root@localhost ~]# gzip files.tar
[root@localhost ~]# du -h files.tar.gz
12K	files.tar.gz
複製代碼

tar和gzip通常是聯合使用的。tar命令提供了一種特殊的功能,就是能夠在打包解包的同時調用其餘的壓縮程序,好比:gzip,bzip2等。

下面的命令,與上面執行兩次命令後是等同的。因此,通常使用下面的方式進行操做。

[root@localhost ~]# tar cvfz files2.tar.gz files
[root@localhost ~]# du -h files2.tar.gz
12K	files2.tar.gz
複製代碼

與之對應的,就是解壓操做。咱們只須要改動命令行中的一個字母便可:c->x。但其實,參數vz也是能夠省略的。

[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 unrar
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.aliyun.com
...
複製代碼

rar不能安裝成功,因此rar文件並不能被解壓。不要緊,咱們在後面的章節把它安裝上。

二、小結

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

小實踐,在centos上安裝tomcat。

三、思考&擴展

一、 通過zip壓縮的文件,再使用gzip壓縮,容量還會減小麼?

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

[root@localhost ~]# dd if=/dev/urandom of=test bs=1M count=69
69+0 records in
69+0 records out
72351744 bytes (72 MB) copied, 0.446161 s, 162 MB/s

[root@localhost ~]# du -h test
69M	test
複製代碼

因此,回到文章最上面,咱們能夠隨機生成一批文件,讓壓縮效果更有意義一點。

seq 1000 | xargs -i dd if=/dev/zero of={}.xjj bs=1k count=256
複製代碼

二、若是已經有了文件,tar命令是如何作到強制覆蓋的?

End

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

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


10 tar 5 bzip2 1 rar 1 unrar 2 zip 2 unzip 1 seq 1 compress 1 uncompress 1 yum 1 which 5 dd

相關文章
相關標籤/搜索