『無慾則無求』Linux常用命令 — 32、壓縮和解壓縮命令

之前說過,在Linux系統下,文件是不區分擴展名的。但是Linux系統支持很多種壓縮格式,如果壓縮文件不寫上擴展名,你自己創建的壓縮文件可能你自己知道,但是過一陣你可能也忘記了。其他管理員也很難知道該文件是一個壓縮文件。同時每一種壓縮文件的解壓縮格式也是不同的,如果你沒有寫壓縮文件的擴展名,解壓縮的時候就會很麻煩,你需要先手動查詢一下該壓縮文件的類型,再進行解壓縮。所以壓縮文件一定要寫上擴展名,這個擴展名不是給系統看的,是方便管理員操作的。

在Linux中可以識別的、常見的壓縮格式有十幾種,比如“.zip”“.gz”“.bz2”“.tar”“tar.gz”“tar.bz2”等。下面說一些常見的壓縮格式。

(一)“.zip”格式

“.zip”是Windows中最常用的壓縮格式,Linux也可以正確識別“.zip”格式,這是一種可以方便地和Windows系統通用壓縮文件。

注意:windows系統下還有一些壓縮包如.rar、.7z,這些壓縮格式的文件在Linux系統就不能使用了。“.zip”我們在Linux系統中不常用,主要是用於和windows系統的壓縮文件通用。

1、“.zip”格式的壓縮命令

壓縮命令就是zip,其基本信息如下。

  • 命令名稱:zip。
  • 英文原意:package and compress(archive)files。
  • 所在路徑:/usr/bin/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。
  • 執行權限:所有用戶。
  • 功能描述:列表、測試和提取壓縮文件中的文件。
命令格式如下:
[root@localhost ~ ] # unzip [選項] 壓縮包名
選項:
-d:指定解壓縮位置

例如:
#把壓縮包解壓到指定位置
[root@DevOps test] # unzip 123.zip -d /root/test/

“.zip"格式在Linux下不常用,記住會用就好。

(二)“.gz”格式

1、“.gz”格式的壓縮命令

“.gz”格式是Linux中最常用的壓縮格式,使用gzip命令進行壓縮,其基本信息如下。

  • 命令名稱:gzip。
  • 英文原意:compress or expand files。
  • 所在路徑:/bin/gzip。
  • 執行權限:所有用戶。
  • 功能描述:壓縮文件或目錄。
命令的格式如下:
[root@localhost ~ ] # gzip [選項] 源文件
選項:
-c:將壓縮數據輸出到標準輸出中,可以用於保留源文件
-d:解壓縮
-r:壓縮目錄(不會把目錄打包,只會把目錄中的文件單獨壓縮)

練習:

# ”.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

# 壓縮目錄
[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
注意:不會把目錄打包,只會把目錄中的文件單獨壓縮。

#解壓目錄
[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


# ”.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”格式的壓縮文件
[root@localhost ~ ]#gunzip install.1og.gz
[root@localhost ~ ]#gzip -d anaconda-ks.cfg.gz

(三)“.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.

(四)“.tar”格式

1、“.tar”格式的打包命令

“.tar”格式的打包和解打包都使用tar命令,區別只是選項不同。我們先看看tar命令的基本信息。

  • 命令名稱:tar。
  • 英文原意:tar。
  • 所在路徑:/bin/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

(五)打包和壓縮的關係

先把需要的文件進行打包,然後把打好的包再進行壓縮。

# 把上邊打好的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系統中壓縮和打包是兩個命令。

(六)“.tar.gz”和“.tar.bz2”格式

1、使用tar命令直接打包壓縮。

命令格式如下:
[root@localhost ~ ] # tar [選項] 壓縮包 源文件或目錄
選項:
-z:壓縮和解壓縮".tar.gz”格式
-j:壓縮和解壓縮".tar.bz2”格式

2、練習:”.tar.bz2“格式

#把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文件。

解壓縮,先把源文件刪除掉,再解壓
[root@localhost ~ ] # rm -rf 123 abc bcd
[root@localhost ~ ] # tar -jxvf test.tar.bz2
123/
123/hjk
123/yui 
abc
bcd

3、“tar.gz”格式

#把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文件。

解壓縮,先把源文件刪除掉,再解壓
[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

我們工作中常用的壓縮和解壓縮命令,主要是六中所講的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章