系統基礎之壓縮歸檔工具詳解

壓縮和解壓縮工具



概論


 在使用操作系統時,我們常會遇到大文件,會使我們很頭疼.在面對時間和空間上的選擇,只能選擇空間,這就要用到壓縮工具和歸檔工具,下面為大家一一介紹.

 壓縮文件只壓縮文本格式的文件,通常不壓縮已經是壓縮的文件.

 壓縮文件就會涉及到壓縮比:

   原理:通過了解文本文件的數據形式,運用壓縮算法,

   目的:時間換空間

 工具:

   壓縮:

      compress/uncompress 結尾:.z

      gzip/gunzip      結尾: .gz

      bzip2/bunzip2     結尾: .bz2

      xz/unxz         結尾: .xz

   歸檔:

      zip/unzip

      tar,cplo


壓縮工具詳解


1.gzip/gunzip工具/zcat

  特點:壓縮后,刪除原文件

  格式:

    gzip [ -acdfhlLnNrtvV19 ] [-S 后綴] [ 文件名 …  ]

    gunzip [ -acfhlLnNrtvV ] [-S 后綴] [ 文件名 …  ]

    zcat [ -fhLV ] [ 文件名 …  ]     查看gzip文件

  選項:

    -d:–decompress  解壓縮,相當于gunzip

    -#:指定壓縮比,默認是6  數字越大,壓縮比越大,建議不修改默認值,除非有特定需求

    -c:將壓縮結果輸出至標準輸出,原文件保留;

      使用格式:gzip -c FILE > /PATH/TO/SOMEFILE.gz

        [root@wen-7 ~]# gzip vimrc     
    [root@wen-7 ~]# ll
    總用量 27064
    -rw-r--r-- 1 root root      230 8月  17 09:18 vimrc.gz
    
    [root@wen-7 ~]# gzip -d vimrc 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root      434 8月  17 09:18 vimrc
    
    [root@wen-7 ~]# gzip -7 vimrc 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root      230 8月  17 09:18 vimrc.gz
    
    [root@wen-7 ~]# gzip -c vimrc > /tmp/vim.gz
    [root@wen-7 ~]# ll /tmp
    -rw-r--r-- 1 root root      230 8月  18 09:07 vim.gz

2.bzip2/bunzip2/bcat

  bzip2, bunzip2 – 一種塊排序文件壓縮軟件,v0.9.5

  bzcat – 將文件解壓縮至標準輸出

  bzip2recover – 恢復損壞的 bzip2 文件

  格式:

    bzip2 [ -cdfkqstvzVL123456789 ] [ filenames …  ]

    bunzip2 [ -fkvsVL ] [ filenames …  ]

    bzcat [ -s ] [ filenames …  ]

    bzip2recover filename

  選項:

    -d:解壓縮

    -#:指定壓縮比,默認是6  數字越大,壓縮比越大,建議不修改默認值,除非有特定需求

    -k –keep:保留原文件

    [root@wen-7 ~]# bzip2 vimrc 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root  255 8月  17 09:18 vimrc.bz2
    [root@wen-7 ~]# bzip2 -d vimrc.bz2 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root  434 8月  17 09:18 vimrc
    [root@wen-7 ~]# bzip2 -7 vimrc 
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root  255 8月  17 09:18 vimrc.bz2
    [root@wen-7 ~]# bzip2 -d vimrc.bz2 
    [root@wen-7 ~]# bzip2 -7 -k  vimrc
    [root@wen-7 ~]# ll
    -rw-r--r-- 1 root root  255 8月  17 09:18 vimrc.bz2

3.xz/unxz/xzcat ( 壓縮效果最好的壓縮工具 )

  unxz is equivalent to xz –decompress.

  xzcat is equivalent to xz –decompress –stdout.

  lzma is equivalent to xz –format=lzma.

  unlzma is equivalent to xz –format=lzma –decompress.

  lzcat is equivalent to xz –format=lzma –decompress –stdout.

  格式:

    xz [option]…  [file]…

  選項:

    -d:解壓縮

    -#:指定壓縮比,默認是6  數字越大,壓縮比越大,建議不修改默認值,除非有特定需求

    -k –keep:保留原文件

[root@wen-7 ~]# xz vimrc
[root@wen-7 ~]# ll
-rw-r--r-- 1 root root  268 8月  17 09:18 vimrc.xz

[root@wen-7 ~]# xz -d vimrc.xz 
[root@wen-7 ~]# xz -7 vimrc 
[root@wen-7 ~]# xz -d vimrc.xz 
[root@wen-7 ~]# xz -7 -k vimrc
[root@wen-7 ~]# ll
-rw-r--r-- 1 root root  434 8月  17 09:18 vimrc
-rw-r--r-- 1 root root  255 8月  17 09:18 vimrc.bz2
-rw-r--r-- 1 root root  268 8月  17 09:18 vimrc.xz

4.zip:最通用的壓縮工具

  特點:壓縮比有限,zip既能歸檔,又能壓縮

     zip/unzip    

    后綴名: .zip

  格式:

     zip filename.zip file..

[root@wen-7 ~]# zip vim.zip vimrc
  adding: vimrc (deflated 53%)
[root@wen-7 ~]# ll
-rw-r--r-- 1 root root  366 8月  18 09:17 vim.zip


歸檔工具詳解


  剛才介紹的是壓縮文具,但壓縮工具只能壓縮文件,不支持壓縮目錄.linux而言,要想對目錄進行壓縮,不對目錄里的文件單獨壓縮,要先對目錄進行歸檔操作,下面為大家介紹歸檔工具:

  歸檔工具主要有兩個: tar  cplo

1.tar – tar 檔案文件管理程序的 GNU 版本。

 格式:

    tar [option] …FIle..

 選項:

   -v: 顯示詳細信息,可于任何選項一起使用

-c: 創建歸檔

  配合 -f /PATH/TO/SOMEFILE.tar file…

    [root@wen-7 ~]# tar -cvf /tmp/vim.tar vimrc    
    -rw-r--r-- 1 root root    10240 8月  18 09:28 vim.tar

-x:展開歸檔

    配合 -f /PATH/TO/SOMEFILE.tar

    默認展開到當期路徑下,使用 -C /PATH/TO/SOMEDIR  到指定路徑下

        [root@wen-7 ~]# tar xvf /tmp/vim.tar    
        -rw-r--r-- 1 root root  434 8月  17 09:18 vimrc
        
        [root@wen-7 ~]# tar xvfC  /tmp/vim.tar  /mnt
        vimrc
        [root@wen-7 ~]# ll /mnt
        總用量 4
        -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc

   

   -t:查看歸檔文件的文件列表

    配合-f /PATH/TO/SOMEFILE.tar

       [root@wen-7 ~]# tar -tvf /tmp/vim.tar         
        -rw-r--r-- root/root       434 2016-08-17 09:18 vimrc

    

  擴展:

   文件或目錄tar歸檔后,還可以執行壓縮功能,配合壓縮工具,就能實現多個文件或目錄

    歸檔并壓縮 :

 -z : gzip2

    -zcf /PATH/TO/SOMEFILE.tar.gz file….  創建歸檔并壓縮

    -zxf  /PATH/TO/SOMEFILE.tar.g       解壓縮并展開歸檔

   [root@wen-7 tmp]# tar -zcvf /tmp/vim.tar.gz /tmp/vim.tar    
    -rw-r--r-- 1 root root      360 8月  18 09:47 vim.tar.gz
    
    [root@wen-7 tmp]# tar -zxvf /tmp/vim.tar.gz 
    [root@wen-7 tmp]# ll
    總用量 8
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc
    -rw-r--r-- 1 root root 312 8月  18 09:52 vim.tar.gz

 

 -J: bzip2

    -jcf  歸檔并壓縮 

    -jxf  解壓縮并展開歸檔

    [root@wen-7 ~]# tar Jcf /tmp/vim.tar.bzip2 vimrc     
    [root@wen-7 ~]# ll /tmp
    總用量 12
    drwx------ 2 pcp  pcp   39 8月  18 09:55 pcp.7z8yRiYHw
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc
    -rw-r--r-- 1 root root 360 8月  18 09:55 vim.tar.bzip2
    -rw-r--r-- 1 root root 360 8月  18 09:54 vim.tar.gz
    [root@wen-7 ~]# tar Jxf /tmp/vim.tar.bzip2 
    [root@wen-7 ~]# ll /tmp
    總用量 12
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc
    -rw-r--r-- 1 root root 360 8月  18 09:55 vim.tar.bzip2
    -rw-r--r-- 1 root root 360 8月  18 09:54 vim.tar.gz

 -j: xz

   -jcf 歸檔并壓縮  

   -jxf 解壓縮并展開歸檔

    [root@wen-7 ~]# tar jcf /tmp/vim.tar.xz vimrc     
    [root@wen-7 ~]# ll /tmp
    總用量 16
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc
    -rw-r--r-- 1 root root 360 8月  18 09:55 vim.tar.bzip2
    -rw-r--r-- 1 root root 360 8月  18 09:54 vim.tar.gz
    -rw-r--r-- 1 root root 333 8月  18 09:57 vim.tar.xz
    [root@wen-7 ~]# tar jxf /tmp/vim.tar.xz vimrc 
    [root@wen-7 ~]# ll /tmp
    總用量 16
    -rw-r--r-- 1 root root 434 8月  17 09:18 vimrc

實戰: 下載redls-3.0.2.tar.gz   https://www.redis.iso

   1.展開至tmp目錄,重新創建壓縮為xz格式

   [root@wen-7 ~]# tar xvzf redls-3.0.2.tar.gz
        [root@wen-7 ~]# tar -jcf redls-3.0.2.tar.xz sh/
        -rw-r--r-- 1 root root  4739 8月  14 11:05 sdfaf.tar.gz
        -rw-r--r-- 1 root root  4407 8月  14 11:14 sdfaf.tar.xz

2.cpio 復制從或到文件 (打包歸檔)

   cpio,命令是通過重定向的方式將文件進行打包備份,還原恢復的工具,他可以解壓以".cpio"或者".tar"結尾的文件

   格式:

    coip [選項] > 文件名或設備名

    coip [選項] < 文件名或設備名

   選項:

                -o 將文件拷貝打包成文件或者將文件輸出到設備上

    -i 解包,將打包文件解壓或將設備上的備份還原到系統-

    t 預覽,查看文件內容或者輸出到設備上的文件內容

    -v 顯示打包過程中的文件名稱。

    -d 解包生成目錄,在cpio還原時,自動的建立目錄

    -c 一種較新的存儲方式

            

  實戰演練:

    1. 將/etc/備份

        [root@wen-7 ~]# find /etc -print| cpio -ov > etc.cpio        
        /etc/smartmontools/smartd_warning.sh
        54092 塊
        [root@wen-7 ~]# ll
        總用量 27064
        -rw-r--r-- 1 root root 27695104 8月  17 22:56 etc.cpio

    2. 內容預覽

        -rwxr-xr-x 1root root 5767 Jun 10 2014 /etc/smartmontools/smartd_warning.sh        
        54092 塊
        [root@wen-7 ~]# cpio -tv < etc.cpio

   3. 要解包文件

        cpio: 未創建 /etc/smartmontools/smartd_warning.sh:已有更新或同樣新的版本存在        
        /etc/smartmontools/smartd_warning.sh
        54092 塊
        [root@wen-7 ~]# cpio -iv <etc.cpio
        
        /etc/smartmontools/smartd_warning.sh
        54092 塊
        [root@wen-7 ~]# cpio -idv <etc.cpio

原創文章,作者:wencx,如若轉載,請注明出處:http://www.www58058.com/37120

(0)
wencxwencx
上一篇 2016-08-18 08:11
下一篇 2016-08-18 10:09

相關推薦

  • 第三周作業

    第三周  文本處理工具:             linux上文本處理三劍客:                      grep、egrep、fgrep:文本過濾工具(模式pat…

    Linux干貨 2016-12-18
  • 馬哥教育網絡班21期-第六周課程練習

    請詳細總結vim編輯器的使用并完成以下練習題 1、復制/etc/rc.d/rc.sysinit文件至/tmp目錄,將/tmp/rc.sysinit文件中的以至少一個空白字符開頭的行的行首加#; 2、復制/boot/grub/grub.conf至/tmp目錄中,刪除/tmp/grub.conf文件中的行首的空白字符; 3、刪除/tmp/rc.sysinit文件…

    Linux干貨 2016-08-05
  • 馬哥教育網絡班22期-第13周博客作業

    第13周博客作業 1、建立samba共享,共享目錄為/data,要求:(描述完整的過程)   1)共享名為shared,工作組為zhucke;   2)添加組develop,添加用戶gentoo,centos和ubuntu,其中gentoo和centos以develop為附加組,ubuntu不屬于develop組;密碼均為用戶名; &nb…

    Linux干貨 2016-12-26
  • N-22-南京-修 第三周博客作業

    #1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。 [xujie@localhost ~]$ who | cut -d " " -f1 | sort -u #2、取出最后登錄到當前系統的用戶的相關信息。 [root@localhost xujie]# last -x | head -1 #3、取出…

    Linux干貨 2016-09-15
  • iptables的DNAT、SNAT配置

    DNAT:目的地址轉換。當外網主機訪問內網的某臺服務器的時候,如果直接暴露服務器的IP于公網,可能會遭受各種各樣的攻擊,而DNAT的主要作用就是在服務器前面添加一臺防火墻。將防火墻的地址公布出去,讓外網客戶端通過訪問防火墻的地址就可以訪問到本地服務器。這樣就起到了保護服務器的目的; SNAT:源地址轉換。內網主機在訪問互聯網的時候所有源地址都轉換為防火墻的外…

    2017-06-12
  • Http實踐

    練習:搭建虛擬主機     (1)基于主機名實現三個虛擬主機     (2) 每虛擬主機使用獨立的訪問日志和錯誤日志     (3) 第三個虛擬主機的/admin要進行用戶訪問認證     (4) 在…

    Linux干貨 2016-09-30
欧美性久久久久