歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux下文檔的壓縮和打包命令

Linux下文檔的壓縮和打包命令

日期:2017/2/28 14:02:30   编辑:Linux教程

首先要弄清兩個概念:打包和壓縮。
打包是指將一大堆文件或目錄變成一個總的文件;
壓縮則是將一個大的文件通過一些壓縮算法變成一個小文件。
為什麼要區分這兩個概念呢?這源於Linux中很多壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),然後再用壓縮程序進行壓縮(gzip bzip2命令)。

Linux下最常用的打包程序就是tar了,使用tar程序打出來的包我們常稱為tar包,tar包文件的命令通常都是以.tar結尾的。生成tar包後,就可以用其它的程序來進行壓縮。

1. gzip工具
語法: gzip [-d#] filename 其中#為1-9的數字,默認壓縮級別為6
只能壓縮文件
-f 強制覆蓋壓縮文件
-1 快速壓縮文件
-9 最佳壓縮文件
-v 可視化壓縮
gzip filename 生成filename.gz 源文件消失
解壓 gzip -d filename.gz 解壓後,壓縮文件也會消失
zcat 用來查看gzip壓縮的包

最佳壓縮和解壓縮

[root@localhost tmp]# gzip -9 a.img
[root@localhost tmp]# ls -lk
-rw-------. 1 root root 16507 Mar 26 13:00 a.img.gz
[root@localhost tmp]# gzip -d a.img.gz
[root@localhost tmp]# ls -lk
-rw-------. 1 root root 16568 Mar 26 13:00 a.img

可以同時壓縮多個文件 gzip file1 file2 file3
1234 [root@localhost tmp]# gzip a.img dhcp-4.3.1.tar
[root@localhost tmp]# ls -l
-rw-------. 1 root root 16902566 Mar 26 13:00 a.img.gz
-rwxr-xr-x. 1 root root 8987298 Mar 26 12:58 dhcp-4.3.1.tar.gz

可視化壓縮
[root@localhost tmp]# gzip -v dhcp-4.3.1.tar
dhcp-4.3.1.tar: 33.5% -- replaced with dhcp-4.3.1.tar.gz

2. bzip2壓縮工具
語法: bzip2 [-dz] filename
壓縮時,可以加 “-z” 也可以不加,都可以壓縮文件
bzip2 filename 生成filename.bz2 源文件消失
不支持壓縮目錄

-d 強制解壓縮文件
-z 強制壓縮文件,默認可以不用加
-k 壓縮時保留原文件
-f 解壓縮時強制覆蓋原文件
-v 可視化壓縮,顯示節省空間百分比,壓縮前後大小;
bzip2 -d filename.bz2 解壓後壓縮文件消失
可以使用 bzcat 查看bz2的壓縮後的文件內容

可以同時壓縮多個文件bzip2 file1 file2

[root@localhost tmp]# bzip2 a.img
[root@localhost tmp]# ls -l
-rw-------. 1 root root 17025434 Mar 26 13:00 a.img.bz2
[root@localhost tmp]# bzip2 -v dhcp-4.3.1.tar
dhcp-4.3.1.tar: 1.538:1, 5.200 bits/byte, 35.00% saved, 13506560 in, 8779359 out.

壓縮時保留源文件,解壓縮時強制覆蓋源文件

[root@localhost tmp]# bzip2 -k a.img
[root@localhost tmp]# ls -lh
-rw-------. 1 root root 17M Mar 26 13:00 a.img
-rw-------. 1 root root 17M Mar 26 13:00 a.img.bz2
[root@localhost tmp]# bzip2 -dfv a.img.bz2
a.img.bz2: done
[root@localhost tmp]# ls -lh
drwxr-xr-x. 2 root root 4.0K Mar 27 13:38 abc
-rw-------. 1 root root 17M Mar 26 13:00 a.img

3. xz
用法同gzip和bzip2
xz filename 生成filename.xz
不支持壓縮目錄

-v 可視化壓縮,顯示壓縮所用的進度和時間;
xz -d filename.xz 進行解壓縮
xcat 用來查看xz壓縮的包的內容

可以同時壓縮多個目錄,解壓縮多個目錄,並可視化顯示;
[root@localhost tmp]# xz a.img dhcp-4.3.1.tar
[root@localhost tmp]# ls -lh
-rw-------. 1 root root 17M Mar 26 13:00 a.img.xz
-rwxr-xr-x. 1 root root 8.0M Mar 26 12:58 dhcp-4.3.1.tar.xz
[root@localhost tmp]# xz -dv a.img.xz dhcp-4.3.1.tar.xz
a.img.xz (1/2)
100.0 % 16.1 MiB / 16.2 MiB = 0.997
dhcp-4.3.1.tar.xz (2/2)
100.0 % 8,146.0 KiB / 12.9 MiB = 0.618

4. zip及unzip
zip是壓縮工具,unzip是解壓縮工具,需要安裝才可以使用。

安裝zip的命令: yum install -y zip
安裝unzip的命令: yum install -y unzip
-v 可視化顯示壓縮過程,顯示壓縮前後文件大小和壓縮百分比;
-d 解壓縮時用,指定解壓縮到哪個目錄下;
不可以同時解壓縮多個文件,解壓縮不支持-v可視化;

壓縮文件: zip filename.zip filename
壓縮目錄: zip -r dir.zip dir/
解壓縮zip壓縮包: unzip filename.zip


壓縮abc目錄為ab.zip,解壓縮ab.zip並指定壓縮到ab目錄下,abc整個目錄解壓縮到ab目錄下;
[root@localhost tmp]# zip -r ab.zip abc/
adding: abc/ (stored 0%)
adding: abc/passwd (deflated 58%)
[root@localhost tmp]# unzip ab.zip -d ab
Archive: ab.zip
creating: ab/abc/
inflating: ab/abc/passwd
inflating: ab/abc/a.img
[root@localhost tmp]# ls -lh
drwxr-xr-x. 3 root root 4.0K Mar 27 15:30 ab
drwxr-xr-x. 2 root root 4.0K Mar 27 15:27 abc
-rw-r--r--. 1 root root 17M Mar 27 15:25 ab.zip
[root@localhost tmp]# ls -l ab/
drwxr-xr-x. 2 root root 4096 Mar 27 15:24 abc
[root@localhost tmp]# ls -l ab/abc/
-rw-------. 1 root root 16965117 Mar 27 15:24 a.img
-rw-r--r--. 1 root root 1019 Mar 27 13:23 passwd

可以使用file name.gz name.zip 查詢是哪一種壓縮格式壓縮的文件;

5. tar打包工具

可以打包目錄也可以打包文件
語法:tar [-zjxcvfpP] filename
打包: tar -cvf test.tar test 其中test是文件或目錄
-c 表示建立包
-v 可視化打包的過程
-f 壓縮時跟 “-f 文件名”,意思是壓縮後的文件名為filename, 解壓時跟 “-f 文件名”,意思是解壓filename. 請注意,如果是多個參數組合的情況下帶有 “-f”,請把 “-f” 寫到最後面。
-z 打包的同時使用gzip壓縮
-j 打包的同時使用bzip2壓縮
-J 打包的同時使用xz壓縮
-C 指定解壓後的目錄
tar -C /tmp/ -xvf 1.tar 解壓到指定目錄/tmp裡面

查看包內容: tar -tf test.tar
-t 查看tar包裡面的文件
同樣使用 tar -tf 查看壓縮的包: tar -tf 1.tar.gz 或者tar -tf 1.tar.bz2

解包: tar -xvf test.tar
-x 解包或者解壓縮
不管是打包還是解包,原來的文件是不會刪除的,但它會覆蓋當前已經存在的文件或者目錄。

打包abc目錄為abc.tar,查看abc.tar的內容,解壓abc.tar包;

[root@localhost tmp]# ls -l
drwxr-xr-x. 2 root root 4096 Mar 27 15:27 abc
-rw-------. 1 root root 16965117 Mar 26 13:00 a.img
-rwxr-xr-x. 1 root root 13506560 Mar 26 12:58 dhcp-4.3.1.tar
[root@localhost tmp]# tar -cvf abc.tar abc
abc/
abc/passwd
abc/a.img
[root@localhost tmp]# tar -tf abc.tar
abc/
abc/passwd
abc/a.img
[root@localhost tmp]# tar -xvf abc.tar
abc/
abc/passwd
abc/a.img

同時打包多個文件到11.tar
[root@localhost tmp]# tar -cvf 11.tar abc a.img dhcp-4.3.1.tar abc.tar
abc/
abc/passwd
abc/a.img
a.img
dhcp-4.3.1.tar
abc.tar
[root@localhost tmp]# ls -lh
-rw-r--r--. 1 root root 62M Mar 27 16:33 11.tar


打包的同時使用gzip壓縮: tar -czvf 1.tar.gz 1 其中1可以是文件也可以是目錄
-z 表示打包同時使用gzip壓縮
解壓.tar.gz的壓縮包: tar -xzvf 1.tar.gz
使用bzip2壓縮: tar -cjvf 1.tar.bz2 1
-j 表示打包同時使用bzip2壓縮
解壓.tar.bz2: tar -xjvf 1.tar.bz2


使用gzip壓縮並打包,使用bzip2壓縮並打包,對比2種壓縮格式,bzip2壓縮後的文件更小;使用xz壓縮,壓縮效果最佳!壓縮後文件最小!
源文件為13M,gzip壓縮後為8.6M,bzip2壓縮後為8.4M,xz壓縮後為8.0M;

[root@localhost tmp]# ls -lh
-rwxr-xr-x. 1 root root 13M Mar 26 12:58 dhcp-4.3.1.tar
[root@localhost tmp]# tar -czvf gzip.tar.gz dhcp-4.3.1.tar dhcp-4.3.1.tar
[root@localhost tmp]# tar -cjvf bzip2.tar.bz2 dhcp-4.3.1.tar dhcp-4.3.1.tar
[root@localhost tmp]# ls -lh
-rw-r--r--. 1 root root 8.4M Mar 27 16:54 bzip2.tar.bz2
-rwxr-xr-x. 1 root root 13M Mar 26 12:58 dhcp-4.3.1.tar
-rw-r--r--. 1 root root 8.6M Mar 27 16:54 gzip.tar.gz
[root@localhost tmp]# xz dhcp-4.3.1.tar
[root@localhost tmp]# ls -lh
-rw-r--r--. 1 root root 8.4M Mar 27 16:54 bzip2.tar.bz2
-rwxr-xr-x. 1 root root 8.0M Mar 26 12:58 dhcp-4.3.1.tar.xz
-rw-r--r--. 1 root root 8.6M Mar 27 16:54 gzip.tar.gz

有時我們會看到一種後綴名為 .tar.xz的文件,這種壓縮包是用xz工具壓縮,

打包壓縮成 xz格式壓縮包:tar -cJvf dir.tar.xz dir/
解壓的方法為:tar -Jxvf file.tar.xz

可以在打包的時候,排除某些文件或者目錄添加參數 --exclude
tar --exclude 1.txt -czvf 1.tar.gz dir/
排除多個文件或者目錄: tar --exclude "目錄名" --exclude "*文件名" -czvf 1.tar.gz dir/

打包root目錄到1.tar.gz 並排除目錄裡面的install開頭的文件;

[root@localhost ~]# tar -czvf 1.tar.gz --exclude "install*" /root/

Copyright © Linux教程網 All Rights Reserved