Linux 壓縮、解壓縮和打包工具

    前言:你是否曾經因為某個文件占用空間較大,而空間緊缺的U盤無法存放此文件。你是否曾經因為軟件里有太多文件而不方便復制和攜帶。你是否曾因需要備份太過零散而頭疼。那么基于“文件壓縮和打包”的技術因此出現。下面介紹下Linux下關于壓縮、解壓縮和打包的工具及使用。


一、相關術語的原理和意義

    1、壓縮原理:

        計算機處理信息的是以二進制的形式表示的,而壓縮工具就是將二進制數據中的將重復的字符串用特殊字符標記,從而達到了壓縮空間的目的目的。

        例如:如果你的數據有 111….. 共計 10個1時,那么壓縮技術就是只記錄了“10個1”,而不是真正的將10個1都記錄,這樣就能減少空間的占用

    2、解壓縮

        是壓縮的反過程,因為壓縮過的文件并無法直接被操作系統所使用,因此,如果我們要使用被壓縮過的文件數據,那么就需要將壓縮文件“還原”成未壓縮前的狀態,這個就是“解壓縮”

    3、壓縮比

        壓縮前和壓縮后的文件所占用磁盤空間的大小比例


二、壓縮技術的好處

    1、減少文件占用的空間

    2、在文件傳輸過程中不易導致文件損壞

    3、可以對壓縮文件進行加密,保護文件

    4、在應用系統文件備份方便


三、在Linux環境中,壓縮文件的擴展名大多是 *.tar , *.tar.gz , *.tgz , *.gz , *.Z , *.bz2 , *.xz ,*.zip

    下面是常見的壓縮文件擴展名對應的壓縮命令

        *.Z            compress程序壓縮文件

        *.gz           gzip程序壓縮的文件

        *.bz2          bzip2程序壓縮的文件  

        *.xz           xz程序壓縮的文件

        *.tar          tar程序打包的文件,但未進行壓縮

        *.tar.gz       tar程序打包的文件,并經gzip程序壓縮

        *.tar.bz2      tar程序打包的文件,并經bzip2程序壓縮

        *.zip          zip程序壓縮的文件

    小貼士:在Linux的中,沒有一個固定的程序后綴,后綴只是為了管理員標識使用,方便日后的維護。


四、下面介紹常用的擴展名對應的壓縮命令及使用

    Linux系統常用的壓縮命令

        compress :屬于比較老舊的一款壓縮軟件,使用于比較舊UNIX系統上,并現的Linux已不常用

        gzip     :現應用最廣的壓縮命令,可解壓由compress、zip和gzip等軟件所壓縮的文件

        bzip2    :基于Burrows-Wheeler算法變換的無損壓縮軟件

        xz       :是一款新的壓縮文件,采用LZMA SDK壓縮

        zip      :是一款比較通用的壓縮工具,在Linux,windows都通用

    壓縮比、壓縮速度和解壓速率比較

             compress < gzip < bzip2 < xz

    1、compress、uncompress

        備注:由于compress比較舊,所以CentOS5.5以上默認沒有安裝,然后compress的程序包是ncompress,如果系統沒有此命令,請執行yum install ncompress安裝此程序

        compress [-cv] 文件或目錄  <—— 壓縮

            -c:將壓縮后的結果輸出至標準輸出

            -v: 顯示出壓縮后的文件信息以及壓縮過程中的文件名變化

        uncompress 文件.Z      <—— 解壓

例子:
[root@www tmp]# cp -a /etc/man.config  /tmp/       #拷貝/etc/man.config文件到/tmp路徑下,為了做練習
[root@www tmp]# compress -v man.config             #對man.config文件進行compress壓縮
man.config:  -- replaced with man.config.Z Compression: 41.84%   #壓縮比
[root@www tmp]# ls
man.config.Z                                       #發現壓縮后的文件后綴默認是.Z,這里也可以看出執行了壓縮命令后,源文件會被清除
[root@www tmp]# uncompress man.config.Z            #解壓縮
[root@www tmp]# ls
man.config                                         #解壓縮后原壓縮的文件會被清除
[root@www tmp]# compress -c man.config > man.config.Z   #這相當于保留壓縮前的文件
[root@www tmp]# ll -h
-rw-r--r--. 1 root root 4.9K Feb 22  2013 man.config
-rw-r--r--. 1 root root 2.9K Jul 12 13:05 man.config.Z   #可以對比壓縮后的文件已經被壓縮變小

    小貼士:compress現在已經很少使用了,因為它無法解壓*.gz,*.bz2等壓縮文件,而后續的壓縮程序能解壓*.Z的程序包

    2、gzip、gunzip、zcat

        gzip [-cdtv#] 文件名  <—— 壓縮

            -c:將壓縮后的結果輸出至標準輸出,這樣就能保留源文件了

            -d:相當于gunzip

            -t:可以校驗壓縮文件的一致性、看看文件有無錯誤

            -v:顯示壓縮比的信息

            -#:指定壓縮比,范圍0-9,數字越大,壓縮比例越大,但所消耗的CPU資源更多。默認為6

        gunzip 文件名.gz     <—— 解壓縮

        zcat 文件名.gz       <—— 不解壓查看gzip壓縮后的文件內容

例子:
[root@www tmp]# gzip -v man.config       #壓縮文件
man.config:	 56.5% -- replaced with man.config.gz   #顯示壓縮比
[root@www tmp]# ls
man.config.gz                            #壓縮后原文件會被刪除
[root@www tmp]# gzip -c man.config > man.config.gz  #這相當于保留壓縮前的文件
[root@www tmp]# ll
-rw-r--r--. 1 root root 4940 Jul 12 13:23 man.config
-rw-r--r--. 1 root root 2184 Jul 12 13:27 man.config.gz
[root@www tmp]# zcat man.config.gz      #不解壓查看gzip壓縮的文件的內容
[root@www tmp]# gzip -1 -c man.config > man.config1.gz 
[root@www tmp]# gzip -9 -c man.config > man.config9.gz    #壓縮比例越高,所占空間越小
[root@www tmp]# ll
-rw-r--r--. 1 root root 4940 Jul 12 13:23 man.config
-rw-r--r--. 1 root root 2332 Jul 12 13:31 man.config1.gz
-rw-r--r--. 1 root root 2184 Jul 12 13:31 man.config9.gz
[root@www tmp]# gzip -d man.config1.gz  #解壓縮文件,相當于gunzip
[root@www tmp]# ls
man.config  man.config1  man.config9.gz

    小貼士:gzip不能壓縮目錄

    3、bzip2、bunzip2、bzcat

        bzip2 [-cdkv#] 文件名   <——壓縮

            -c:將壓縮后的結果輸出至標準輸出,這樣就能保留源文件了

            -d:相當于gunzip

            -t:可以校驗壓縮文件的一致性、看看文件有無錯誤

            -v:顯示壓縮比等的信息

            -k:保留原文件,而不會刪除原始文件

            -#:指定壓縮比,范圍0-9,數字越大,壓縮比例越大,但所消耗的CPU資源更多。默認為6

        bunzip2 文件名.bz2    <——解壓縮

        bzcat 文件名.bze      <——不解壓查看bzip2壓縮后的文件內容

例子:
[root@www tmp]# bzip2 -v man.config 
  man.config:  2.251:1,  3.555 bits/byte, 55.57% saved, 4940 in, 2195 out.    #壓縮比,速度等信息
[root@www tmp]# ls
man.config.bz2
[root@www tmp]# bzip2 -d man.config.bz2  #解壓縮,相當于bunzip
[root@www tmp]# ls
man.config
[root@www tmp]# bzip2 -9 -k man.config   #-k參數壓縮后保留了原始文件
[root@www tmp]# ll
-rw-r--r--. 1 root root 4940 Jul 12 13:23 man.config
-rw-r--r--. 1 root root 2195 Jul 12 13:23 man.config.bz2
[root@www tmp]# bzcat man.config.bz2    #不解壓查看bzip2壓縮后的文件內容
[root@www tmp]# bzip2 -c man.config > man.config2.bz2 
[root@www tmp]# ls
man.config  man.config2.bz2  man.config.bz2

    小貼士:bzip2不能壓縮目錄

    4、xz、unxz、xzcat

        xz [-cdkv# ] 文件名  <——壓縮

            各參數用法和bzip2一樣,這里不再詳述

        unxz 文件名.xz   <——解壓縮

        xzcat 文件名     <——不解壓查看xz壓縮后的文件內容

練習:
[root@www tmp]# xz -v man.config 
man.config (1/1)
  100.0 %                   2,204 B / 4,940 B = 0.446    #壓縮比信息
[root@www tmp]# xz -c man.config > man.config.xz    #這相當于保留壓縮前的文件
[root@www tmp]# ll
-rw-r--r--. 1 root root 4940 Jul 12 13:23 man.config
-rw-r--r--. 1 root root 2204 Jul 12 14:18 man.config.xz
[root@www tmp]# unxz man.config.xz       #解壓縮,相當于xz -d 
[root@www tmp]# ll
-rw-r--r--. 1 root root 4940 Jul 12 13:23 man.config

    5、zip、unzip

        zip ZIPFILE.zip src_file….    <——壓縮

            備注:zip可以對目錄進行歸檔壓縮

        unzip ZIPFILE.zip      <——解壓縮

練習:
[root@www tmp]# cp -R /home/* /tmp/home/    #將home下文件拷貝到/tmp目錄下
[root@www tmp]# ls /home/
user1  user2
[root@www tmp]# zip home.zip home/*         #對目錄進行壓縮
  adding: home/user1/ (stored 0%)
  adding: home/user2/ (stored 0%)
[root@www tmp]# ls
home  home.zip

    對于目錄的歸檔壓縮通常使用tar工具,所以zip這里不再多介紹


五、打包歸檔工具

    tar:打包歸檔工具

        能實現將多個文件打包成單個文件,即為歸檔文件,但是tar只是歸檔,不壓縮

    1、創建歸檔

        tar [-cvf] Tarfile.tar filename 

            -c:create,新建打包文件

            -v:在壓縮/解壓縮過程中,將正在處理的文件名顯示出來

            -f filename:-f后面一定要接被處理的文件名,建議-f 單獨使用一個參數

[root@www tmp]# tar -cv -f /tmp/home.tar /home
[root@www tmp]# ls /tmp/
home.tar

    2、展開歸檔

        tar [-xvf] Tarfile.tar

            -x:解壓縮的功能

            -v:在壓縮/解壓縮過程中,將正在處理的文件名顯示出來

            -f filename:-f后面一定要接被處理的文件名,建議-f 單獨使用一個參數            

[root@www tmp]# tar -xvf home.tar
[root@www tmp]# ls
home  home.tar

    3、 查看歸檔后的文件中包含了哪些原文件

        tar [-tf] Tarfile.tar

            -t:查看打包文件里包含哪些文件名

            -f filename:-f后面一定要接被處理的文件名,建議-f 單獨使用一個參數

[root@www tmp]# tar -tf home.tar

    4、tar與壓縮工具(gzip、bzip2、xz)來執行壓縮

         tar [-zjJ] Tarfile.tar

            -z:使用gzip進行壓縮/解壓縮,此文件名最好為*.tar.gz

            -j:使用bzip2進行壓縮/解壓縮,此文件名最好為*.tar.bz2

            -J:使用xz進行壓縮/解壓縮,此文件名最好為*.tar.xz

[root@www tmp]# tar -zcvf home.tar.gz home
[root@www tmp]# ls
home  home.tar  home.tar.gz


六、命令總結

    1、Linux系統常用的壓縮命令 : compress,gzip,bzip2,xz,zip

        其中compress,gzip,bzip2,xz不能對目錄進行壓縮歸檔,一般和tar歸檔打包工具一起使用,從而達到對目錄進行歸檔 

        zip可以直接對目錄進行壓縮歸檔

    2、打包歸檔工具:tar

        創建歸檔參數: [-cvf]

        展開歸檔參數: [-xvf]

        查看歸檔后的文件參數:[-tf]]

        tar和壓縮工具一起使用參數:[-zjJ]

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

(0)
螃蟹螃蟹
上一篇 2015-07-15 22:13
下一篇 2015-07-15 22:22

相關推薦

  • 馬哥教育網絡班21期+第8周課程練習

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別 集線器(HUB)是在OSI模型的第一層——物理層——連接多臺主機、延長網絡的設備。其主要功能是將從一個端口接收到的數據包轉發給所有端口。中繼器(Repeater)是將由電纜傳過來的電信號或光信號調整波形和放大再傳給另一個電纜的設備,提供多端口服務的中繼器稱作集線器。二者的主要區別是…

    Linux干貨 2016-08-29
  • N21沉舟17周作業

    1、結合圖形描述LVS的工作原理; NAT模型 NAT模型其實就是通過網絡地址轉換來實現負載均衡的,它的工作方式幾乎跟iptables 中的DNAT一模一樣的,NAT模型的工作方式: 1.用戶請求VIP(也就是是CIP請求VIP) 2,Director Server 收到用戶的請求后,發現源地址為CIP請求的目標地址為VIP,那么Dorector Serve…

    Linux干貨 2016-11-14
  • 計算機基礎知識及基本命令(20170214)

    計算機基礎知識 操作系統相關 linux分區介紹 安裝linux linux基本命令    一、計算機基礎知識       計算機(computer):計算機(Computer):俗稱電腦,是一種能接收和存儲信息,并按照存儲在其內部的程序對海量數據進行自動、高速地處理,然后把處理結果輸出的現代化智能電子設備 …

    Linux干貨 2017-02-14
  • 用戶及權限管理 (Blog 1)

    用戶、權限相關概念及用戶管理類命令

    2017-11-06
  • linux 系統啟動流程探討

    linux系統啟動流程: linux系統啟動流程,按層次分的話,可以分為內核空間的啟動與用戶空間的啟動。 下面先說說內核空間的啟動流程。 一個linux要跑起來,在最簡陋的情況下,必須有:kernel , lib ,application kernel功能:加載驅動程序,內存管理,進程管理,文件系統,網絡管理,安全管理,glibc 庫: 是一個函數的集合,每…

    Linux干貨 2017-04-11
欧美性久久久久