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

壓縮和解壓縮工具



概論


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

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

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

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

   目的:時間換空間

 工具:

   壓縮:

      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
下一篇 2016-08-18

相關推薦

  • 計算機的組成及其功能

        計算機是一種能接受和存儲信息,并按照存儲在其內部的程序對輸入的信息進行加工、處理,然后把處理結果輸出的高度自動化的電子設備。計算機是由運算器,控制器,存儲器,輸入裝置和輸出裝置五大部件組成,每一部件分別按要求執行特定的基本功能。如下圖所示: (1)  運算器或稱算術邏輯單元(Arithmetical and Logica…

    Linux干貨 2016-10-30
  • 06文本工具簡單介紹

    在Linux系統中,一個核心理念就是:一切皆文件。正確的對系統中文本的編輯配置與管理是Linux系統得以穩定運行的一個重要大前提。 因此Linux系統中的文件與管理特別重要,下面簡單說一下在對文件處理過程中經常用到的一些命令工具。 文本查看命令:cat,tac,rev,more,less cat [option]…[file]… -E…

    Linux干貨 2016-10-31
  • 建立yum源及yum命令的使用

    一、什么是YUM     YUM的全稱為 Yellowdog Update Modifier,其主要目的是為了解決RPM包安裝時的依賴關系的問題。YUM只是一個用于軟件安裝的前端工具,其主要的服務對象還是RPM軟件包。     YUM采用C/S架構,即客戶端與服務器的模…

    Linux干貨 2015-05-11
  • Docker 簡介

    Docker在現有云計算虛擬化中是非?;鸬囊粋€項目,那么他和虛擬化有什么不同呢 從上圖來看,好像和我們之前說到的虛擬化并沒有什么不同,但這里需要說明的是在各guest主機上,是沒有操作系統的,他們共用Host主機上的內核空間,只對用戶空間進行了隔離。 因此在這種環境下我們不把他稱為虛擬化而稱作容器。 此種方式的實現主要基于了linux內核自帶的兩項技術,分別…

    2017-03-19
  • test

    test

    Linux干貨 2017-11-26
  • LAMP基于rsyslog+loganalyzer實現日志集中管理及分析

    前言 作為一名運維工程師,查看分析系統日志是每天必做的功課,但每次查看日志都得一臺服務器一臺服務器的看,幾臺服務器還可以這么對付,但如果管理成百上千臺線上服務器,這種方法就捉襟見肘了。于是我們就需要用到日志服務器了,但是如何能讓它更直觀的顯示呢?loganalyzer是一個不錯的選擇,本文將講解如何使用rsyslog+loganalyze實現日志統一管理及分…

    Linux干貨 2015-04-27
欧美性久久久久