之前說過,在Linux系統下,檔案是不區分副檔名的。但是Linux系統支援很多種壓縮格式,如果壓縮檔案不寫上副檔名,你自己建立的壓縮檔案可能你自己知道,但是過一陣你可能也忘記了。其他管理員也很難知道該檔案是一個壓縮檔案。同時每一種壓縮檔案的解壓縮格式也是不同的,如果你沒有寫壓縮檔案的副檔名,解壓縮的時候就會很麻煩,你需要先手動查詢一下該壓縮檔案的型別,再進行解壓縮。所以壓縮檔案一定要寫上副檔名,這個副檔名不是給系統看的,是方便管理員操作的。
在Linux中可以識別的、常見的壓縮格式有十幾種,比如.zip
、.gz
、.bz2
、.tar
、tar.gz
、tar.bz2
等。
下面對一些常見的壓縮格式進行說明。
1、“.zip”格式壓縮
.zip
是Windows中最常用的壓縮格式,Linux也可以正確識別.zip
格式,這是一種可以方便地和Windows系統通用壓縮檔案。
注意:Wwindows系統下還有一些壓縮包如
.rar
、.7z
,這些壓縮格式的檔案在Linux系統就不能使用了。.zip
我們在Linux系統中不常用,主要是用於和Windows系統的壓縮檔案通用。
(1)“.zip”格式的壓縮命令
Linux中,.zip
格式檔案的壓縮命令就是zip
,其基本資訊如下:
- 命令名稱:
zip
- 英文原意:
package and compress(archive)files
- 所在路徑:
/usr/bin/zip
- 執行許可權:所有使用者。
- ·功能描述:壓縮檔案或目錄。
zip
命令格式如下:
[root@localhost ~]# zip [選項] 壓縮包名 原始檔或源目錄
選項:
-r:指定要壓縮的目錄
示例:
[root@localhost ~]# zip ana.zip anaconda-ks.cfg
# 把多個檔案壓縮到一個壓縮檔案中
[root@localhost ~]# zip test.zip abc abcd
adding:abc (deflated 56%)
adding:abcd(stored 0%)
# 把多個檔案和目錄壓縮到一個壓縮檔案中
[root@DevOps test]# zip 123.zip abc def -r /root/
(2)“.zip”格式的解壓縮命令
.zip
格式檔案的解壓縮命令是unzip
,其基本資訊如下:
- 命令名稱:
unzip
- 英文原意:
list,test and extract compressed files in a ZIP archive
- 所在路徑:
/usr/bin/unzip
- 執行許可權:所有使用者。
- 功能描述:列表、測試和提取壓縮檔案中的檔案。
unzip
命令格式如下:
[root@localhost ~]# unzip [選項] 壓縮包名
選項:
-d:指定解壓縮位置
示例:
# 把壓縮包解壓到指定位置
[root@DevOps test]# unzip 123.zip -d /root/test/
提示:
.zip
格式的檔案在Linux下不常用,記住會用就好。
2、“.gz”格式壓縮
(1)“.gz”格式的壓縮命令
.gz
格式檔案是Linux中最常用的壓縮格式,使用gzip
命令進行壓縮。其基本資訊如下:
- 命令名稱:
gzip
- 英文原意:
compress or expand files
- 所在路徑:
/bin/gzip
- 執行許可權:所有使用者。
- 功能描述:壓縮檔案或目錄。
gzip
命令格式如下:
[root@localhost ~]# gzip [選項] 原始檔
選項:
-c:將壓縮資料輸出到標準輸出中,可以用於保留原始檔
-d:解壓縮
-r:壓縮目錄(不會把目錄打包,只會把目錄中的檔案單獨壓縮)
示例:
# 1.”.gz”格式壓縮
[root@DevOps test]# ll
-rw-r--r--. 1 root root 0 1月 9 18:17 abc
-rw-------. 1 root root 0 1月 9 18:17 def
[root@DevOps test]# gzip abc
[root@DevOps test]# ll
總用量 4
-rw-r--r--. 1 root root 24 1月 9 18:17 abc.gz
-rw-------. 1 root root 0 1月 9 18:17 def
# 2.壓縮目錄
[root@DevOps test]# ll
總用量 0
-rw-r--r--. 1 root root 0 1月 12 00:40 abc
-rw-------. 1 root root 0 1月 9 18:17 def
[root@DevOps test]# cd ..
[root@DevOps ~]# gzip -r test/
[root@DevOps ~]# ll /root/test/
總用量 8
-rw-r--r--. 1 root root 24 1月 12 00:40 abc.gz
-rw-------. 1 root root 24 1月 9 18:17 def.gz
# 注意:不會把目錄打包,只會把目錄中的檔案單獨壓縮。
# 3.解壓目錄
[root@DevOps ~]# gzip -dr test/
[root@DevOps ~]# ll /root/test/
總用量 0
-rw-r--r--. 1 root root 0 1月 12 00:40 abc
-rw-------. 1 root root 0 1月 9 18:17 def
# 4.”.gz”格式壓縮,並保留原始檔(非常規操作,知道就好)
[root@localhost ~]# gzip -c anaconda-ks.cfg >> anaconda-ks.cfg.gz
# 提示:>為覆蓋內容,>>為追加內容。
注意:
- 使用
.gz
格式壓縮檔案後,原始檔會被刪除掉。- 使用
-c
選項,會把檔案內容壓縮之後的二進位制資料,輸出到螢幕上。而我們不讓壓縮資料輸出到螢幕上,而是重定向到壓縮檔案中,這樣可以在壓縮檔案的同時不刪除原始檔。
(2)“.gz”格式的解壓縮命令
如果要解壓縮gz
格式,那麼使用gzip -d 壓縮包
和gunzip 壓縮包
命令都可以。
我們先看看gunzip
命令的基本資訊:
- 命令名稱:
gunzip
- 英文原意:
compress or expand files
- 所在路徑:
/bin/gunzip
- 執行許可權:所有使用者。
- 功能描述:解壓縮檔案或目錄。
示例:兩個命令都可以解壓縮.gz
格式的壓縮檔案。
# 1.使用gunzip命令
[root@localhost ~]# gunzip install.1og.gz
# 2.使用gzip命令
[root@localhost ~]# gzip -d anaconda-ks.cfg.gz
3、“.bz2”格式壓縮
** (1)“.bz2”格式的壓縮命令**
.bz2
是Linux的另一種壓縮格式,從理論上來講,.bz2
格式壓縮的演算法更先進、壓縮比更好;而.gz
格式相對來講壓縮的時間更快。(壓縮比越高,壓縮的時候越消耗資源。)
.bz2
格式的壓縮命令是bzip2
,命令的基本資訊如下:
- 命令名稱:
bzip2
- 英文原意:
a block-sorting file compressor
- 所在路徑:
/usr/bin/bzip2
- 執行許可權:所有使用者。
- 功能描述:.bz2格式的壓縮命令。
bzip2
命令的基本格式如下:
[rootelocalhost ~]# bzip2 [選項] 原始檔
選項:
-d:解壓縮
-k:壓縮時,保留原始檔
-v:顯示壓縮的詳細資訊(意義不大,知道就行)
示例:
# 壓縮成.bz2格式(不保留原始檔)
[root@localhost ~]# bzip2 anaconda-ks.cfg
# 保留原始檔壓縮
[root@localhost ~]# bzip2 -k install.log.syslog
注意:.bz2
壓縮格式不能夠壓縮目錄,看下面示例。
# 壓縮目錄
[root@DevOps ~]# bzip2 test/
bzip2: Input file test/ is a directory.
[root@DevOps ~]# ll /root/test/
總用量 0
-rw-r--r--. 1 root root 0 1月 12 00:40 abc
-rw-------. 1 root root 0 1月 9 18:17 def
# 發現目錄中的檔案並沒有被壓縮。
# 加入-r選項,則會直接報錯,並提示你bzip2 命令都有哪些選項,這些選項中也沒有壓縮資料夾的選項。
[root@DevOps ~]# bzip2 -r test/
# 說明“.bz2”壓縮格式,不能壓縮目錄。
** (2)“.bz2”格式的解壓縮命令**
.bz2
格式的壓縮檔案可以使用bzip2 -d 壓縮包
命令來進行解壓縮,也可以使用bunzip2 壓縮包
命令來進行解壓縮。
先看看bunzip2
命令的基本資訊:
- 命令名稱:
bumzip2
- 英文原意:
a block-sorting file compressor
- 所在路徑:
/usr/bin/bunzip2
- 執行許可權:所有使用者。
- 功能描述:bz2格式的解壓縮命令。
示例:
# 兩個命令都可以解壓縮
[root@localhost ~]# bunzip2 anaconda-ks.cfg.bz2
[root@localhost ~]# bzip2 -d install.1og.syslog.bz2
# 如果解壓後檔案存在衝突,會有提示。可刪除衝突檔案,在進行解壓。
[root@localhost ~]# bzip2 -d bed.bz2
bzip2:Output file bcd already exists.
4、“.tar”格式打包
提示:先說一下打包不等於壓縮呦,請往下看。
** (1)“.tar”格式的打包命令**
.tar
格式的打包和解打包都使用tar
命令,區別只是選項不同。
我們先看看tar
命令的基本資訊:
- 命令名稱:
tar
- 英文原意:
tar
- 所在路徑:
/bin/tar
- 執行許可權:所有使用者。
- 功能描述:打包與解打包命令。
tar
命令的基本格式如下:
[root@localhost ~]# tar [選項] [-f壓縮包名] 原始檔或目錄
選項:
-c:打包
-f:指定壓縮包的檔名。壓縮包的副檔名是用來給管理員識別格式的,所以一定要正確指定副檔名
-v:顯示打包檔案過程
# 只是打包,不是壓縮
[root@localhost ~]# tar -cvf anaconda-ks.cfg.tar anaconda-ks.cfg
練習:
# 打包123目錄、abc檔案、bcd檔案。
[root@localhost ~]# tar -cvf test.tar 123 abc bcd
123/
123/hjk
123/yui
abc
bcd
# 注意:打包後原始檔不會被刪除。
** (2)“.tar”格式的解打包命令**
.tar
格式的解打包也需要使用tar
命令,但是選項不太一樣。
命令格式如下所示:
[root@localhost ~]# tar [選項] 壓縮包
選項:
-x:解打包
-f:指定壓縮包的檔名-V:顯示解打包檔案過程
-t:測試,就是不解打包,只是檢視包中有哪些檔案
-C(大)目錄:指定解打包位置
練習:
# 解打包
[root@localhost ~ ] # rm -rf 123 abc bcd
[root@localhost ~ ]# tar -xvf test.tar
123/
123/hjk
123/yui
abc
bcd
5、打包和壓縮的關係
先把需要的檔案進行打包,然後把打好的包再進行壓縮。
# 1.把上邊打好的test.tar包,在進行壓縮。
[root@localhost ~]# gzip test.tar
# 得到test.tar.gz檔案,是一個即壓縮也打包的檔案。
# 在用test.tar.gz檔案的時候,先解壓縮在解打包。
[root@localhost ]# gzip -d test.tar.gz
[root@localhost ~]# tar -xvf test.tar
123/
123/hjk
123/yui
abc
bcd
這樣是不是用著很麻煩,其實不用擔心,我們下邊會有直接壓縮打包和解壓縮解打包的命令。
這裡主要是在Linux系統中壓縮和打包是兩個命令。
6、“.tar.gz”和“.tar.bz2”格式打包並壓縮
(1)使用tar命令直接打包壓縮。
命令格式如下:
[root@localhost ~]# tar [選項] 壓縮包 原始檔或目錄
選項:
-z:壓縮和解壓縮".tar.gz”格式
-j:壓縮和解壓縮".tar.bz2”格式
** (2)練習:”.tar.bz2“格式**
# 1.把123目錄、abc檔案、bcd檔案,直接打包壓縮為”.tar.bz2“格式檔案
[root@localhost ~]# tar -jcvf test.tar.bz2 123 abc bcd
123/
123/hjk
123/yui
abc
bed
# 得到test.tar.bz2檔案。
# 2.解壓縮,先把原始檔刪除掉,再解壓
[root@localhost ~]# rm -rf 123 abc bcd
[root@localhost ~]# tar -jxvf test.tar.bz2
123/
123/hjk
123/yui
abc
bcd
** (3)“tar.gz”格式**
# 1.把123目錄、abc檔案、bcd檔案,直接打包壓縮為“tar.gz”格式檔案
[root@localhost ~]# tar -zcvf test.tar.gz 123 abc bcd
123/
123/hjk
123/yui
abc
bed
# 得到test.tar.gz檔案。
# 2.解壓縮,先把原始檔刪除掉,再解壓
[root@localhost ~]# rm -rf 123 abc bcd
[root@localhost ~]# tar -zxvf test.tar.gz
123/
123/hjk
123/yui
abc
bcd
** (4)其他常用方式**
1)只檢視不解壓
[root@localhost ~]# tar -ztvf test.tar.gz
drwxr-xr-x root/root 02017-02-1714:44123/
-rw-r--r--root/root 02017-02-1714:41123/hjk
-rw-r--r--root/root02017-02-1714:41123/yui
-rw-r--r--root/root 1122017-02-17 09:16 abc
-rw-r--r--root/root 02017-02-17 14:44 bcd
用長格式顯示了包中所有的檔案和資料夾。
也就是把選項中的c變成t。-jtvf
同理。
2)解壓縮到指定位置
[root@localhost ~]# tar -zxvf test.tar.gz -C /tmp
注意:
-C /tmp
一定要跟在解壓縮包的後邊,不然會儲存。
3)只解壓壓縮包中的特定檔案,到指定位置
[root@localhost ~]# tar -zxvf test.tar.gz -C/tmp 123/hjk
總結:我們在日常工作中,常用的壓縮和解壓縮命令,主要就是上面所說明的這些命令。