簡介
我們在操作linux服務器的時候會用到一些解壓和壓縮命令 .zip .gz .bz2 .tar.gz .tar.bz2
,下面我對常用解壓命令進行匯總。
1.tar
tar命令參數前面加”-"與不加“-”的區別:
tar命令參數前面加不加“-”執行命令的結果是沒有區別的,區別只要是在於linux風格方面,加“-”屬於System V風格,不加“-”屬於BSD風格,所以在使用tar命令的時候它的參數加不加“-”結果是一樣的,看個人的使用方式;
常用參數:
選項 | 介紹 |
---|---|
-z | 是否同時具有gz屬性 |
-j | 是否同時具有bz2屬性 |
-J | 是否同時具有xz屬性 |
-x | 解壓縮、提取打包的內容 |
-t | 查看壓縮包內容 |
-c | 建立一個壓縮,打包文檔 |
-C | 切換到指定目錄,表示指定解壓縮包的內容和打包的內容存放的目錄 |
-v | 顯示壓縮或者打包的內容 |
-f | 使用文件名,在f后面要接壓縮后的文件的名字,只要用到tar命令,-f選項是必須要用的,-f參數在使用的時候一定排在其他參數的后面,在最右邊 |
-p | 保留備份數據的原本權限與屬性,常用於備份(-c)重要的配置文件 |
-P | 保留絕對路徑(大寫P) |
1.1.打包
示例:
- a.將
a.txt
和b.txt
打包成一個文件:
tar -cvf test.tar a.txt b.txt
- b.查看
test.tar
文件中的內容:
tar -tf test.tar
- c.提取
test.tar
文件中的內容到/test
目錄下:
# 如果不用`-C`指定目錄,默認是當前目錄。
tar -xf test.tar -C /test
1.2.壓縮
linux主要有三種壓縮方式:
.gzip
:是公認的壓縮這速度最快,壓縮大文件的時候與其他的壓縮方式相比更加明顯,歷史最久,應用最廣泛的壓縮方式.bzip
:壓縮形成的文件小,但是可用性不如gzip.xz
:是最新的壓縮方式,可以自動提供最佳的壓縮率
建議的壓縮的時候標明后綴:
參數 | 作用 | 命名方式 |
---|---|---|
-z | 用於gzip壓縮方式 | 文件名.tar.gz |
-j | 用於bzip2壓縮方式 | 文件名.tar.bz2 |
-J | 用於xz壓縮方式 | 文件名.tar.xz |
示例:
- a.用
gzip
的壓縮方式將test.log
文件壓縮為test.tar.gz
文件:
tar -zcvf test.tar.gz test.log
- b.用
bzip2
的壓縮方式將test.log
文件壓縮為test.tar.bz2
文件
tar -jcvf test.tar.bz2 test.log
在壓縮的過程中,我們可以發現:
壓縮速度:gz > bz2 > xz
壓縮率:xz > bz2 > gz
1.3.解壓
tar命令在解壓的時候不需要指明自己壓縮的方式它會自己選擇跟壓縮文件對應的方式去解壓:
- a.將
test.tar.gz
解壓到當前目錄
tar -xf test.tar.gz
- b.將
test.tar.bz2
文件解壓在/test
目錄下:
tar -xf test.tar.bz2 -C /test
補充
- a.在打包和壓縮的過程中,我們有時候會看到這樣的語句:tar: 從成員名中刪除開頭的“/”,這個並不是報錯,是因為沒有加上-P選項,沒有保留原來的絕對路徑去打包或者壓縮,提取打包的內容跟解壓一樣,下面舉一個例子:
壓縮
# 不加'P'
tar -zcvf test.tar.gz /test
# 加'P'
tar -zcvPf test.tar.gz /test
解壓
# 不加'P'
tar -xvf test.tar.gz -C /test
# 加'P'
tar -xvPf test.tar.gz -C /test
- b.在使用tar壓縮或者打包的時候,可以通過增加--exclude來達到排除指定的文件的目的
# 排除`test`文件夾中的`a.txt`文件
tar -cvf test.tar --exclude=a.txt test
2.zip
zip 是個使用廣泛的壓縮程序,壓縮后的文件后綴名為 .zip。
2.1.zip命令
基本用法:
zip [參數] [壓縮包名] [壓縮的目錄或者文件的路徑]
常用參數:
選項 | 介紹 |
---|---|
-m | 將文件壓縮后,刪除原文件 |
-o | 將壓縮文件內的所有文件的最新變動時間設為壓縮的時間 |
-q | 安靜模式,在壓縮的時候不顯示指令執行的過程 |
-r | 遞歸壓縮,將自定目錄下的所有子文件以及文件一起處理 |
-x | ”文件列表“,壓縮時排除文件列表中的文件 |
示例:
- a.壓縮目錄,將
test
目錄壓縮為名為test.zip
壓縮包:
# 正常壓縮,不加`-q`選項,顯示壓縮過程
zip -r test.zip test
# 加`-q`選項,不顯示壓縮過程
zip -q -r test.zip test
- b.壓縮多個文件,將文件
1.txt
和2.txt
文件壓縮名為test.zip
的壓縮包:
# 因為壓縮的都是文件,可以不用加上`-r`選項
zip -q test.zip 1.txt 2.txt
- c.壓縮文件和目錄,將
1.txt
文件和test
目錄壓縮名為test.zip
的壓縮包:
zip -q -r test.zip 1.txt test
- d.將
test
目錄壓縮為test.zip
壓縮包,並且排除test
目錄中的1.txt
文件:
zip -r test.zip test -x "./test/1.txt"
2.2.unzip命令
基本用法:
unzip [參數] [壓縮文件] (-d [目錄]) //如果不是用括號里面的內容,則解壓文件在當前工作目錄
常用參數:
選項 | 介紹 |
---|---|
-c | 將解壓縮的結果顯示到屏幕上(顯示每一個目錄下的每一個文件的內容),同時對字符做適當的轉換,但是並沒有解壓壓縮包 |
-l | 顯示壓縮文件內所包含的文件 |
-t | 檢查壓縮文件是否正確 |
-v | 執行時顯示壓縮文件的詳細信息 |
-q | 安靜模式,執行時不顯示任何信息 |
-d | 指定文件解壓后存儲的目錄 |
-x | 指定不要處理壓縮文件中的那些文件 |
示例:
- a.將
test.zip
壓縮包解壓縮的結果打印出來:
unzip -c test.zip
- b.查看
test.zip
壓縮包所包含的文件:
unzip -l test.zip
- c.檢查
test.zip
壓縮文件是否正確:
# 顯示全部`ok`表示文件是正確的
unzip -t test.zip
- d.不解壓壓縮文件
test.zip
,查看壓縮包里面的內容(查看顯示的文件列表還包含壓縮比率):
# 使用`-v`顯示的內容比使用`-l`顯示的信息更加詳細
unzip -v test.zip
- e.將
test.zip
壓縮包解壓到/data
目錄下:
unzip -q test.zip -d /data
總結
后綴 | 解壓命令 |
---|---|
.tar | tar –xvf test.tar |
.gz | gzip -d test.gz 或者gunzip test.gz |
.tar.gz、.tgz | tar –xzf test.gz |
.bz2 | bzip2 -d test.bz2或者用bunzip2.bz2 |
.tar.bz2 | tar –xjf test.tar.bz2 |
.Z | uncompress test.Z |
.tar.Z | tar –xZf test.tar.Z |
.rar | unrar e test.rar |
.zip | unzip test.zip |