『學了就忘』Linux基礎命令 — 32、壓縮和解壓縮相關命令

繁華似錦Fighting發表於2021-11-09

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

在Linux中可以識別的、常見的壓縮格式有十幾種,比如.zip.gz.bz2.tartar.gztar.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

總結:我們在日常工作中,常用的壓縮和解壓縮命令,主要就是上面所說明的這些命令。

相關文章