壓縮與歸檔

 壓縮與歸檔,這是兩種不同的概念,其用途也不一樣,壓縮是通過壓縮算法對文件進行壓縮,其體積會根據算法減少;歸檔則是將文件打包,相當與給文件加了個“盒子”,體積還有可能增大。
 壓縮工具只能壓縮單個文件,不能壓縮多個文件或文件夾,所以需要先歸檔文件再壓縮。
  常見的壓縮工具有:gzip、bzip2、xz、zip、compress(比較古老了)
  常見的歸檔工具有:zip(既可壓縮、也可歸檔)、tar、cpio

壓縮工具 對應解壓工具 展開工具 壓縮後綴
compress uncompress zcat .Z
gzip gunzip、gzip -d zcat .gz
bzip2 bunzip2、bzip2 -d bzcat .bz2
xz unxz、xz -d xzcat .xz
zip unzip、zip -d zip -l .zip

一、compress
  compress 是早期Linux使用的壓縮工具,到現在基本不用了。

        壓縮文件:
        [root@localhost ~]# compress  messages  
        [root@localhost ~]# ll messages 
        -rw-------.  1 root root 4354 Jan  7 21:49 messages.Z
        解壓文件:
        [root@localhost ~]# uncompress  messages.Z 

二、gzip
  gzip 這是以前較爲流行的壓縮工具,採用LZ77算法,至今也還能見其被使用

    gzip [options]   filename 
        -d  解壓,相當於gunzip 
        -t  test,檢查壓縮文件是否完整,並不解壓
        -r  對文件夾中的所文件進行壓縮/解壓,並不能真正的壓縮/解壓文件夾
        -c  --stdout  --to-stdout,將壓縮結果作爲標準化輸出,不修改原文件
        -#  指定壓縮比,1-9,級別越高壓縮率越高,越消耗資源
        對messages文件進行壓縮:
        [root@localhost ~]# ll -h  messages
        -rw-r--r--.  1 root root  10K Jan  7 22:05 messages

        [root@localhost ~]# gzip  -9  messages 

        [root@localhost ~]# ll -h messages.gz 
        -rw-r--r--. 1 root root 54 Jan  7 22:05 messages.gz

        對messages文件進行解壓:
        [root@localhost ~]# gunzip messages.gz 
        或   [root@localhost ~]# gzip -d messages.gz
        [root@localhost ~]# ll -h messages 
        -rw-r--r--. 1 root root 10K Jan  7 22:05 messages

        不解壓,僅查看文件:
        [root@localhost ~]# zcat   messages.gz  |  less

        不管是壓縮還是解壓都會刪除原文件,若要保留則:
        保留源文件壓縮:
        [root@localhost ~]# gzip -c  messages  >>messages.gz
        [root@localhost ~]# ll mess*
        -rw-------. 1 root root 46245 Jan  7 22:23 messages
        -rw-r--r--. 1 root root  3385 Jan  7 22:35 messages.gz
        保留原文件解壓:
        [root@localhost ~]# gzip -d  -c  messages.gz  >messages
        [root@localhost ~]# ll messages*
        -rw-r--r--. 1 root root 46245 Jan  7 22:32 messages
        -rw-------. 1 root root  3294 Jan  7 22:23 messages.gz

三、bzip2
  bzip2,對gzip進行了升級改進,壓縮算法爲 LZ77/LZ78,其用法與gzip非常類似。

        bzip2  [options]  filename1  filename2 ... 
        -d  解壓文件,相當於bunzip2
        -k  保留源文件
        -t  test,檢查壓縮文件是否完整,並不解壓
        -q  靜默操作
        -r  對文件夾中的所文件進行壓縮/解壓,並不能真正的壓縮/解壓文件夾
        -c  --stdout  --to-stdout,將壓縮結果作爲標準化輸出,不修改原文件
        -#  與gzip類似,指定壓縮級別,1-9,越高越佔用資源

        壓縮文件:
        [root@localhost ~]# bzip2 -k -9  messages  
        [root@localhost ~]# ll mes* -h
        -rw-------. 1 root root  46K Jan  7 22:23 messages
        -rw-------. 1 root root 3.0K Jan  7 22:23 messages.bz2
        可以看到壓縮還是挺強的
        查看壓縮文件:
        [root@localhost ~]# bzcat messages.bz2   | less
        解壓文件:
        [root@localhost ~]# bzip2 -d  messages.bz2  -c >123
        解壓文件,並重輸出到指定文件123 

四、xz
  xz 是推薦使用的一種壓縮格式,在網上經常被使用爲源代碼打包的首選格式。

        xz  [options]    filename  ...
        -d  解壓文件,相當於bunzip2
        -k  保留源文件
        -t  test,檢查壓縮文件是否完整,並不解壓
        -q  靜默操作
        -r  對文件夾中的所文件進行壓縮/解壓,並不能真正的壓縮/解壓文件夾
        -c  --stdout  --to-stdout,將壓縮結果作爲標準化輸出,不修改原文件
        -#  與gzip類似,指定壓縮級別,1-9,越高越佔用資源
        -F  指定壓縮格式,可以爲LZMA算法,壓縮後的文件後綴爲.lzma,不常用
        壓縮文件:
        [root@localhost ~]# xz -k -9 messages 
        [root@localhost ~]# ll messages.xz   -h
        -rw-------. 1 root root 2.6K Jan  7 22:23 messages.xz
        查看文件:
        [root@localhost ~]# xzcat  messages.xz  | less
        解壓文件:
        [root@localhost ~]# xz -d  messages.xz  

五、zip
  zip也是一種比較古老的壓縮工具了,其支持壓縮、打包,並且Windows/Linux都默認支持,不需要解壓安裝工具。

        壓縮文件:
        [root@localhost ~]# zip  messages.zip messages
            adding: messages (deflated 93%
        注意,先指定壓縮後的文件名,然後纔是源文件
        解壓文件:
        [root@localhost ~]# unzip messages.zip 
        查看文件:
        [root@localhost ~]# zcat  messages.zip
        打包並壓縮文件:
        [root@localhost ~]# zip  log.zip log/*
            adding: log/anaconda/ (stored 0%)
            adding: log/anaconda.zip (stored 0%)
            adding: log/audit/ (stored 0%)
            adding: log/boot.log (deflated 80%)
            adding: log/btmp (stored 0%)
            adding: log/btmp-20180103 (stored 0%)

        [root@localhost ~]# ll -h  log.zip  
        -rw-r--r--. 1 root root 391K Jan  7 23:16 log.zip

六、tar
  tar是個專門用於打包的工具,使用gzip、bzip2、xz等工具的遞歸壓縮,可以發現實際上是對文件夾內的所有文件進行單獨的壓縮,並不是將多個文件壓縮成個壓縮包。

        [root@localhost ~]# gzip -r  log
        [root@localhost ~]# ll log
        -rw-r--r--. 1 root root 184715 Jan  7 19:37 anaconda.zip.gz
        -rw-r--r--. 1 root root   2759 Jan  7 19:37 boot.log.gz
        -rw-------. 1 root root    619 Jan  7 19:37 cron-20171220.gz
        -rw-------. 1 root root    659 Jan  7 19:37 cron-20180103.gz
        -rw-------. 1 root root   1621 Jan  7 19:37 cron-20180107.gz
        ...

  tar的作用就是將多個文件打包(歸檔)並壓縮

        tar  [options] file  ...
        -c  創建歸檔
        -x  解開歸檔
        -t  不展開歸檔,僅查看
        -f  指定歸檔的文件名稱
        -j  --bzip2,調用bzip2工具進行壓縮/解壓
        -J  --xz,調用xz工具進行壓縮/解壓
        -z  --gzip 調用gzip工具進行壓縮/解壓
        -v  顯示過程
        -p  保留權限
        -C  更改解壓/壓縮的目錄,缺省爲本地
        常見用法:
        tar  -cf   歸檔.tar   源文件....     //創建歸檔
        tar  -xf   歸檔.tar   解壓文件        //解壓歸檔
        tar  -tf    歸檔.tar          //查看歸檔
        創建歸檔並使用xz壓縮:
        [root@localhost ~]# tar   -Jcvf mess.tar.xz  messages  
        解壓歸檔並使用xz解壓:
        [root@localhost ~]# tar -Jxvf mess.tar.xz  -C  /tmp/
        不解壓僅展開歸檔:
        [root@localhost ~]# tar -tvf mess.tar.xz 
        -rw------- root/root     46245 2018-01-07 22:23 messages
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章