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