Linux歸檔和壓縮

Linux歸檔和壓縮

在Linux系統上,很多的軟件包都是通過tar(tape archive,磁帶歸檔)這個工具打包的。

  • 歸檔的含義
    將許多零散的文件整理爲一個文件
    文件總的大小基本不變
  • 壓縮的含義
    按某種算法減小文件所佔用空間的大小
    恢復時按對應的逆向算法解壓

一、tar工具:打包和解包

tar工具是Unix、Linux系統中非常經典的工具,最開始是用來將文件打包到磁帶上,因此得名(tape archive,磁帶歸檔)。現在依然廣泛應用於磁盤上的文件打包管理。

  • tar 工具常用選項
    -c:創建歸檔
    -x:釋放歸檔
    -r:往歸檔文件中追加文件。
    -f:指定歸檔文件名稱,必須放在所有選項的最後
    -t:顯示歸檔中的文件清單
    -C:指定釋放路徑
    -z、-j、-J:分別調用 .gz、.bz2、.xz 格式的工具進行處理
  • 常見的壓縮格式及命令工具:
    gzip----》.gz
    bzip2----》.bz2
    xz----》.xz

1、tar打包格式:

tar 選項 /路徑/壓縮包的名字 /源數據 …(源數據可以多個)
- 示例

  [root@test ~]# tar -cvf /opt/test.tar /etc/passwd /home/
  • 以三種不同格式打包並且壓縮
    因爲tar工具本身是不帶有壓縮功能的,所以需要和其他壓縮工具配合使用
  • 示例
[root@test ~]# tar -zcf /etc/passwd /home/
student/ test01/  test02/  
[root@test ~]# tar -zcf /opt/test01.gz /etc/passwd /home/
tar: 從成員名中刪除開頭的“/[root@test ~]# tar -jcf /opt/test02.bz2 /etc/passwd /home/
tar: 從成員名中刪除開頭的“/[root@test ~]# tar -Jcf /opt/test03.xz /etc/passwd /home/
tar: 從成員名中刪除開頭的“/[root@test ~]# ls /opt/
rh  test01.gz  test02.bz2  test03.xz  
  • 根據使用的格式來做文件的命名
    -z:代表gzip壓縮格式,以.gz結尾
    -j:代表bzip2壓縮格式,以.bz2結尾
    -J:代表xz壓縮格式,以.xz結尾

2、tar解包格式:

tar 選項 /路徑/tar包名字 -C(大寫) /路徑/釋放的路徑

  • 示例
[root@test ~]# tar -xf /opt/test01.gz  -C /opt/tarbao/
[root@test ~]# ls /opt/tarbao/
etc  home
[root@test ~]# ls /opt/tarbao/etc/
passwd

3、查看歸檔文件的內容

tar 選項 /路徑/tar包名字

  • 示例
[root@test ~]# tar -tvf /opt/test01.gz

4、往歸檔文件中追加新文件

tar 選項 /路徑/tar包名字

  • 示例
    [root@test ~]# tar -rvf /opt/text.tar /etc/shadow
    tar: 從成員名中刪除開頭的“/”
    [root@test ~]# tar -tf /opt/text.tar | grep shadow
    /etc/shadow
    但是這個不太常用,壓縮後的包是沒有辦法添加新文件的。

二、壓縮和解壓

壓縮文件爲了減少文件在網絡傳輸中消耗的時間。在Linux系統中常見的壓縮工具有gzip、bzip2、xz三種。

  • 常見的壓縮格式及命令工具:
    gzip----》.gz
    bzip2----》.bz2
    xz----》.xz

1、gzip和gunzip

gzip和gunzip是linux系統中經常使用的對文件進行壓縮和解壓縮的命令。使用方法簡單。但是有一個缺點就是不能一次將多個文件或目錄壓縮成一個文件,所以gzip一般會和tar工具同時使用。在tar命令中提供“-z”選項可以生成以“.gz”結尾的壓縮文件。

  • gzip和gunzip命令格式
    gzip 選項 文件名
    gunzip 選項 文件名

  • 常用的命令選項
    -c:將輸出寫到標準輸出上。
    -d:對壓縮文件進行解壓縮。
    -l:對每個壓縮文檔,顯示一下字段“壓縮文件的大小、未壓縮文件的大小、壓縮比和未壓縮文件的名字”。
    -r:遞歸對指定目錄下各級子目錄以及文件進行壓縮或解壓縮。
    -v:對每個壓縮和解壓的文件,顯示文件名和壓縮比。

  • 示例

      [root@test ~]# ls /zhuanye/
      shili2.txt  shili3.txt  shili4.txt  shili5.txt  shili.txt
      [root@test ~]# ls /zhuanye/
      shili2.txt  shili3.txt  shili4.txt  shili5.txt  shili.txt
      [root@test ~]# gzip -r /zhuanye/*  /zhuanye/     #壓縮/zhuanye目錄下所有文件
      [root@test ~]# ls /zhuanye/
      shili2.txt.gz  shili3.txt.gz  shili4.txt.gz  shili5.txt.gz  shili.txt.gz
    
  • 查看壓縮文件情況

      [root@test ~]# gzip -rl /zhuanye/*
               compressed        uncompressed  ratio uncompressed_name
                      200                 195  12.3% /zhuanye/shili2.txt
                       31                   0   0.0% /zhuanye/shili3.txt
                       31                   0   0.0% /zhuanye/shili4.txt
                       31                   0   0.0% /zhuanye/shili5.txt
                       39                  11   0.0% /zhuanye/shili.txt
                      332                 206 -47.6% (totals)
    

因爲我這裏的文件都是空文件,不能很好的體現壓縮比。只做命令示例。

2、bzip2和bunzip2 更高壓縮比的工具

和gzip這個工具一樣,也不能將多個文件打包到一起,也經常和tar一起使用。
但是呢。bzip2比gzip的壓縮比例更高。
有點類似Windows系統中的rar和7z中間的比較。
bzip2在壓縮文件時不會保留源文件。

  • bzip2 命令格式
    bzip2 選項 文件名
  • bunzip2 命令格式
    bunzip2 選項 文件名
  • 常用的選項
    -c:將壓縮與解壓的結果送到標準輸出。
    -d:解壓縮。
    -f:強制覆蓋。
    -k:保留源文件。
    -v:顯示詳細的信息。
  • 示例
    保留源文件進行壓縮
[root@test ~]# ls /zhuanye/
shili2.txt  shili3.txt  shili4.txt  shili5.txt  shili.txt
[root@test ~]# bzip2 -kv  /zhuanye/shili*
  /zhuanye/shili2.txt:  0.929:1,  8.615 bits/byte, -7.69% saved, 195 in, 210 out.
  /zhuanye/shili3.txt:  no data compressed.
  /zhuanye/shili4.txt:  no data compressed.
  /zhuanye/shili5.txt:  no data compressed.
  /zhuanye/shili.txt:   0.234:1, 34.182 bits/byte, -327.27% saved, 11 in, 47 out.
[root@test ~]# ls /zhuanye/
shili2.txt  shili2.txt.bz2  shili3.txt  shili3.txt.bz2  shili4.txt  shili4.txt.bz2  shili5.txt  shili5.txt.bz2  shili.txt  shili.txt.bz2
[root@test ~]# 
  • 示例
    解壓,因爲我上一個操作是沒有刪除源文件的,所以我加了-f選項強制覆蓋。
    [root@test ~]# bunzip2 -vf /zhuanye/*.bz2
    /zhuanye/shili2.txt.bz2: done
    /zhuanye/shili3.txt.bz2: done
    /zhuanye/shili4.txt.bz2: done
    /zhuanye/shili5.txt.bz2: done
    /zhuanye/shili.txt.bz2: done
    [root@test ~]# ls /zhuanye/
    shili2.txt shili3.txt shili4.txt shili5.txt shili.txt
發佈了14 篇原創文章 · 獲贊 3 · 訪問量 1658
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章