天天看點

Linux下常用的壓縮工具總結(gzip/tar/bzip2/zip)

gzip:

1)隻能針對普通檔案進行壓縮,對檔案夾、符号連結無效。

2)如果想對多個檔案一起壓縮并打包,gzip是無法辦到的,需要結合tar進行

<code>[root@mysql-master databackup]</code><code># ll</code>

<code>總用量 32</code>

<code>drwx------ 2 root root 4096 10月 12 00:43 2016-10-12_00-43-29</code>

<code>drwx------ 2 root root 4096 10月 12 00:44 2016-10-12_00-44-00</code>

<code>drwx------ 2 root root 4096 10月 12 00:46 2016-10-12_00-46-53</code>

<code>drwx------ 2 root root 4096 10月 12 00:47 2016-10-12_00-47-43</code>

<code>drwx------ 2 root root 4096 10月 12 00:49 2016-10-12_00-49-02</code>

<code>-rw-r--r-- 1 root root 2522 10月 19 21:17 </code><code>passwd</code>

<code>drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackup</code>

<code>drwxr-xr-x 2 root root 4096 10月 12 00:37 xtrabackuplog</code>

使用“-c”選項,可以保留原有檔案

<code>[root@mysql-master databackup]</code><code># gzip -c passwd &gt;passwd.gz</code>

<code>總用量 36</code>

<code>-rw-r--r-- 1 root root 1006 10月 19 21:18 </code><code>passwd</code><code>.gz</code>

直接使用“gzip+檔案”的壓縮方式,原始檔案不會被保留

<code>[root@mysql-master databackup]</code><code># cp /etc/shadow .</code>

<code>總用量 40</code>

<code>---------- 1 root root 1393 10月 19 21:19 shadow</code>

<code>[root@mysql-master databackup]</code><code># gzip shadow </code>

<code>---------- 1 root root  536 10月 19 21:19 shadow.gz</code>

使用“gzip -d 壓縮檔案”,進行解壓

<code>[root@mysql-master databackup]</code><code># gzip -d shadow.gz</code>

<code>如上,我們發現原有的shadow檔案已經出來了</code>

gzip有九個壓縮級别1-9(數字越大,壓縮強度越高,速度對應的也會慢些),預設級别為6

# gzip -1 test.log

tar:

<code>壓縮</code><code>/etc</code><code>檔案:</code>

<code>[root@mysql-master databackup]</code><code># tar -czvf etc.tar.gz /etc</code>

<code>[root@mysql-master databackup]</code><code># du -sh etc.tar.gz </code>

<code>12Metc.</code><code>tar</code><code>.gz</code>

<code>解壓縮,并進行檢視</code>

<code>[root@mysql-master databackup]</code><code># tar -xf etc.tar.gz</code>

<code>tar</code><code>常用的幾個選項:</code>

<code>-c選項:表示要進行打包動作</code>

<code>-x選項:表示要進行拆包動作</code>

<code>-z選項:表示用</code><code>gzip</code><code>進行壓縮或解壓縮</code>

<code>-</code><code>v</code><code>選項:表示在拆包過程中直接整個過程,把已拆包的檔案顯示出來</code>

<code>-f選項:表示指定要拆包的檔案</code>

<code>-t選項:列出打包的内容,适用于不想解壓,但想檢視壓縮包内容的情況</code>

<code>[root@mysql-master databackup]</code><code># du -sh src.tar.gz </code>

<code>607Msrc.</code><code>tar</code><code>.gz</code>

<code>[root@mysql-master databackup]</code><code># tar -ztvf src.tar.gz |less</code>

bzip2:

bzip2用于壓縮檔案,bunzip2用于解壓檔案

但是我們檢視連結檔案,會發現,其實bunzip2其實就是bzip2的一個連結

<code>[root@mysql-master ~]</code><code># ls -l /usr/bin/bunzip2 </code>

<code>lrwxrwxrwx. 1 root root 5 7月   5 23:42 </code><code>/usr/bin/bunzip2</code> <code>-&gt; </code><code>bzip2</code>

<code>[root@mysql-master ~]</code><code># bzip2 install.log</code>

<code>[root@mysql-master ~]</code><code># ls</code>

<code>anaconda-ks.cfg        index.html       </code><code>install</code><code>.log.syslog  M_pass.log  R_Server.log  模闆  圖檔  下載下傳  桌面</code>

<code>changehostpassword.sh  </code><code>install</code><code>.log.bz2  ip_list.txt         R_PWD.txt   公共的        視訊  文檔  音樂</code>

<code>[root@mysql-master ~]</code><code># file install.log.bz2 </code>

<code>install</code><code>.log.bz2: </code><code>bzip2</code> <code>compressed data, block size = 900k</code>

<code>[root@mysql-master ~]</code><code># bunzip2 -d install.log.bz2 </code>

<code>anaconda-ks.cfg        index.html   </code><code>install</code><code>.log.syslog  M_pass.log  R_Server.log  模闆  圖檔  下載下傳  桌面</code>

<code>changehostpassword.sh  </code><code>install</code><code>.log  ip_list.txt         R_PWD.txt   公共的        視訊  文檔  音樂</code>

zip:

與gzip/bzip2類似,zip用于檔案壓縮,unzip指令用于解壓縮,zip支援對檔案和檔案夾的壓縮,-r表示遞歸

注意:zip在壓縮檔案的時候,會保留原檔案

<code>[root@mysql-master ~]</code><code># cd /usr/local/src/</code>

<code>[root@mysql-master src]</code><code># ls</code>

<code>cmake-2.8.8         libiconv-1.14.</code><code>tar</code><code>.gz    mcrypt-2.6.8         mhash-0.9.9.9.</code><code>tar</code><code>.gz                 mysql-5.5.32.</code><code>tar</code><code>.gz  php-5.3.27</code>

<code>cmake-2.8.8.</code><code>tar</code><code>.gz  libmcrypt-2.5.8         mcrypt-2.6.8.</code><code>tar</code><code>.gz  mysql-5.5.32                         nginx-1.6.2          php-5.3.27.</code><code>tar</code><code>.gz</code>

<code>libiconv-1.14       libmcrypt-2.5.8.</code><code>tar</code><code>.gz  mhash-0.9.9.9        mysql-5.5.32-linux2.6-x86_64.</code><code>tar</code><code>.gz  nginx-1.6.2.</code><code>tar</code><code>.gz</code>

<code>[root@mysql-master src]</code><code># zip -r nginx.zip nginx-1.6.2.tar.gz nginx-1.6.2/</code>

<code>cmake-2.8.8         libiconv-1.14.</code><code>tar</code><code>.gz    mcrypt-2.6.8         mhash-0.9.9.9.</code><code>tar</code><code>.gz                 mysql-5.5.32.</code><code>tar</code><code>.gz  nginx.zip</code>

<code>cmake-2.8.8.</code><code>tar</code><code>.gz  libmcrypt-2.5.8         mcrypt-2.6.8.</code><code>tar</code><code>.gz  mysql-5.5.32                         nginx-1.6.2          php-5.3.27</code>

<code>libiconv-1.14       libmcrypt-2.5.8.</code><code>tar</code><code>.gz  mhash-0.9.9.9        mysql-5.5.32-linux2.6-x86_64.</code><code>tar</code><code>.gz  nginx-1.6.2.</code><code>tar</code><code>.gz   php-5.3.27.</code><code>tar</code><code>.gz</code>

<code>[root@mysql-master src]</code><code># du -sh nginx.zip </code>

<code>7.7Mnginx.zip</code>

unzip結合-d參數,解壓到指定檔案夾

<code>[root@mysql-master src]</code><code># mkdir -p /mysqlbackup</code>

<code>[root@mysql-master src]</code><code># unzip -d /mysqlbackup nginx.zip </code>

<code>[root@mysql-master src]</code><code># ls -l /mysqlbackup/</code>

<code>總用量 792</code>

<code>drwxr-xr-x 9 root root   4096 9月  16 2014 nginx-1.6.2</code>

<code>-rw-r--r-- 1 root root 804164 6月  22 01:17 nginx-1.6.2.</code><code>tar</code><code>.gz</code>

使用“unzip -v 壓縮檔案”的組合,不解壓的情況下,來檢視壓縮檔案中的内容

<code>[root@mysql-master src]</code><code># unzip -v nginx.zip </code>

<code>Archive:  nginx.zip</code>

<code> </code><code>Length   Method    Size  Cmpr    Date    Time   CRC-32   Name</code>

<code>--------  ------  ------- ---- ---------- ----- --------  ----</code>

<code>  </code><code>804164  Defl:N   804176   0% 06-22-2016 01:17 c721c245  nginx-1.6.2.</code><code>tar</code><code>.gz</code>

<code>       </code><code>0  Stored        0   0% 09-16-2014 20:23 00000000  nginx-1.6.2/</code>

<code>    </code><code>2369  Defl:N      732  69% 09-16-2014 20:23 85d03809  nginx-1.6.2</code><code>/configure</code>

<code>       </code><code>0  Stored        0   0% 09-22-2016 15:46 00000000  nginx-1.6.2</code><code>/contrib/</code>

<code>       </code><code>0  Stored        0   0% 09-16-2014 20:23 00000000  nginx-1.6.2</code><code>/contrib/vim/</code>

<code>       </code><code>0  Stored        0   0% 09-22-2016 15:46 00000000  nginx-1.6.2</code><code>/contrib/vim/indent/</code>

<code>     </code><code>250  Defl:N      165  34% 09-16-2014 20:23 87c1f91b  nginx-1.6.2</code><code>/contrib/vim/indent/nginx</code><code>.vim</code>

<code>       </code><code>0  Stored        0   0% 09-22-2016 15:46 00000000  nginx-1.6.2</code><code>/contrib/vim/ftdetect/</code>

<code>     </code><code>198  Defl:N       79  60% 09-16-2014 20:23 68d244f2  nginx-1.6.2</code><code>/contrib/vim/ftdetect/nginx</code><code>.vim</code>

<code>       </code><code>0  Stored        0   0% 09-16-2014 20:23 00000000  nginx-1.6.2</code><code>/contrib/vim/syntax/</code>

<code>   </code><code>31641  Defl:N     5987  81% 09-16-2014 20:23 fe4d7202  nginx-1.6.2</code><code>/contrib/vim/syntax/nginx</code><code>.vim</code>

<code>       </code><code>0  Stored        0   0% 09-22-2016 15:46 00000000  nginx-1.6.2</code><code>/contrib/unicode2nginx/</code>

使用“unzip -t 壓縮檔案”,驗證壓縮檔案的完整性

<code>[root@mysql-master src]</code><code># unzip -t nginx.zip </code>

<code>    </code><code>testing: nginx-1.6.2.</code><code>tar</code><code>.gz       OK</code>

<code>    </code><code>testing: nginx-1.6.2/             OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/configure</code>    <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/</code>     <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/vim/</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/vim/indent/</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/vim/indent/nginx</code><code>.vim   OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/vim/ftdetect/</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/vim/ftdetect/nginx</code><code>.vim   OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/vim/syntax/</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/vim/syntax/nginx</code><code>.vim   OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/unicode2nginx/</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/contrib/unicode2nginx/koi-utf</code>   <code>OK</code>

<code>    </code><code>-------------------------------------------------------</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/Makefile</code>     <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/</code>        <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/uwsgi_params</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/koi-utf</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/win-utf</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/mime</code><code>.types   OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/fastcgi</code><code>.conf   OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/koi-win</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/fastcgi_params</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/scgi_params</code>   <code>OK</code>

<code>    </code><code>testing: nginx-1.6.2</code><code>/conf/nginx</code><code>.conf   OK</code>

<code>No errors detected </code><code>in</code> <code>compressed data of nginx.zip.</code>

zip的擴充:

當我們配置好壓縮檔案的時候,發現其中某個比較占空間的檔案并不是我們想要的,并且,我們不想重新解壓和壓縮。

<code>向壓縮檔案中删除檔案:</code>

<code>[root@mysql-master src]</code><code># zip nginx.zip -d nginx-1.6.2.tar.gz </code>

<code>deleting: nginx-1.6.2.</code><code>tar</code><code>.gz</code>

<code>[root@mysql-master src]</code><code># unzip -v nginx.zip |grep nginx-1.6.2.tar.gz </code>

<code>發現沒有該檔案存在了</code>

<code>向壓縮檔案中添加檔案:</code>

<code>[root@mysql-master src]</code><code># zip -m nginx.zip nginx-1.6.2.tar.gz </code>

<code>  </code><code>adding: nginx-1.6.2.</code><code>tar</code><code>.gz (deflated 0%)</code>

<code>[root@mysql-master src]</code><code># unzip -v nginx.zip |grep nginx-1.6.2.tar.gz</code>

本文轉自 冰凍vs西瓜 51CTO部落格,原文連結:http://blog.51cto.com/molewan/1863756,如需轉載請自行聯系原作者

繼續閱讀