Linux常用命令-解壓縮篇

2021-02-19 編程珠璣
前言

Linux常用命令中,有很多用於對文件的壓縮或解壓,本文將介紹這些解壓縮命令中不常見卻非常實用的用法。

tar

tar是linux中最常用的解壓縮命令。tar命令可用於處理後綴名為tar,tar.gz,tgz,.tar.Z,tar.bz2的文件。
涉及參數說明:

-c 建立新的壓縮文件
-r 添加文件到已經壓縮的文件
-u 添加改變了和現有的文件到已經存在的壓縮文件
-x 從壓縮的文件中提取文件
-t 顯示壓縮文件的內容
-z 支持gzip解壓文件
-j 支持bzip2解壓文件
-v 顯示操作過程
-k 保留源有文件不覆蓋
-C 切換到指定目錄
-f 指定壓縮文件

--delete            刪除包中文件
--strip-components  去除目錄
--add-file          向包中添加文件

壓縮歸檔tar包,不壓縮

tar -cvf test.tar test1.log test2.log 
tar -cvf test.tar test/*  
tar -cvf test.tar *.log  

由於這種方式不會進行壓縮,僅做了歸檔,因此速度極快,同時佔用空間也較大。

歸檔並壓縮為tar.gz或tar.bz2

這種方式打包對文件進行了壓縮:

tar -zcvf test.tar.gz file1 file2 #打包,並以gzip壓縮
tar -jcvf test.tar.bz2 file1 file2 #打包,並以bzip2壓縮

查看壓縮包中的文件

如果不想解壓,只是想查看壓縮包中的文件內容,可以使用-t參數:

tar -tvf test.tar 

打包後刪除源文件

有時候再打包後可能需要刪除源文件,但一個個刪除顯得麻煩,我們可以使用--remove-files 選項:

tar -zcvf test.tar.gz test.log --remove-files 

打包除指定目錄或文件以外的文件

對於某些目錄下的文件,可能只需要打包部分文件,因此可以使用--exclude選項排除一些不需要打包的文件:

tar -zcvf test.tar.gz --exclude=test/*.log test/* 

這裡用到了--exclude選項,支持通配符和正則表達式,因此也非常強大。

向壓縮包中更新文件

例如,壓縮包中已經打入了test以及其他文件,現在你只想更新壓縮包中的test文件,那麼你可以使用--add-file選項:

tar -tf test.tar --add-file=test 

向tar包中增加文件

向tar包中增加文件可使用-r參數:

tar -rf test.tar testfile #在test.tar包中增加文件,只針對tar包

刪除壓縮包中的文件

在不解壓的情況下,可使用--delete選項刪除包中的文件:

tar --delete -f test.tar  test1 

解壓解壓tar.gz和tar包到當前目錄

tar -xvf test.tar.gz
tar -xvf test.tar 

解壓到指定目錄

tar -xvf test.tar.gz -C dir
tar -xvf test.tar -C dir

解壓包中指定的文件

例如test.tar.gz包中文件情況如下:

1.txt
log/
log/1.log
log/2.log
log/2.log
log/4.log
log/5.log

如果我們只需要解壓出log目錄下的1.log,只需要執行下面的命令:

tar -xvf test.tar.gz log/1.log
tar -xvf test.tar.gz log/1.log -C test #將1.log解壓到test目錄

解壓時去掉目錄結構

壓縮包中的文件可能存在多級目錄,常規方式解壓出來後,對應目錄也會存在。如果只想要壓縮包的文件,可以去掉目錄結構(注意:同一文件夾下文件名不能重):

tar -xvf test.tar.gz --strip-components=1 

解壓時不覆蓋原文件

當前目錄可能已經存在包中的文件,如果不想解壓出來的文件覆蓋當前已存在的文件,可使用-k參數(會拋出錯誤信息):

tar -xvkf test.tar.gz

特別提醒

前面所提到的解壓或者壓縮帶的f參數需要放在最後,因為它指定了壓縮包名字,否則會出現解壓或壓縮失敗。

zip/unzip

zip和unzip命令主要用於處理zip包。

壓縮

涉及參數說明:

-d 從壓縮文件內刪除指定的文件。
-f 此參數的效果和指定"-u"參數類似,但不僅更新既有文件,如果某些文件原本不存在於壓縮文件內,使用本參數會一併將其加入壓縮文件中。
-j 只保存文件名稱及其內容,而不存放任何目錄名稱。
-r 遞歸處理,將指定目錄下的所有文件和子目錄一併處理。
-u 更換較新的文件到壓縮文件內。
-v 顯示指令執行過程或顯示版本信息。
-y 直接保存符號連接,而非該連接所指向的文件,本參數僅在UNIX之類的系統下有效。
- <壓縮效率> 壓縮效率是一個介於1-9的數值。

壓縮文件

zip -r test.zip test/ 
zip -rj test.zip test/ 

指定壓縮率打包文件

zip -r8 test.zip test/* 

打包符號連結文件

前面的命令只能打包普通文件,如果想要打包符號連結文件,則需要使用參數-y:

zip  -ry test.zip test

向壓縮包中增加或更新文件

有時候需要向壓縮包中增加文件,但又不想重新解壓打包,可以使用參數-u:

zip -u test.zip test2 #向test.zip 包中增加test2文件

壓縮時加密

壓縮時如果需要對壓縮包進行加密,可使用-P參數:

zip -r test.zip test1 test -P 66666 

刪除壓縮包的特定文件

zip -d test.zip test  

解壓

涉及參數說明:

-l 顯示壓縮文件內所包含的文件
-j 只保存文件名稱及其內容,而不存放任何目錄名稱。
-o 以壓縮文件內擁有最新更改時間的文件為準,將壓縮文件的更改時間設成和該
-v 顯示指令執行過程或顯示版本信息。
-d 指定解壓目錄,目錄不存在會創建

查看壓縮包中的文件信息

unzip -l test.zip 
unzip -v test.zip 

解壓壓縮包

unzip -o test.zip -d dir #講test.zip解壓到dir目錄

解壓包中指定的文件

如果不知道需要解壓的文件名,可先查看包中的文件,然後使用下面的方法:

unzip -o test.zip "1.log" -d dir #解壓包中的1.log文件到dir目錄
unzip -o tet.zip "*.log" -d dir  #解壓包中所有的log文件

解壓時去掉目錄結構

壓縮包中有多層目錄結構,普通解壓仍然會保留目錄結構,如果只想要壓縮包中的文件,可以使用-j參數:

zip -oj test.zip -d ./temp  

解壓jar包

jar包是java歸檔包,但同樣可用unzip解壓查看裡面的文件:

unzip -o java.jar -d dir

gzip

涉及參數說明:

-k 保留源文件
-d 解開壓縮文件
-r 遞歸處理,將指定目錄下的所有文件及子目錄一併處理
-v 顯示指令執行過程

tar命令帶有-z參數,並且打包成tar.gz文件時,便調用gzip進行了壓縮。gzip對文本的壓縮率約有60%~70%,壓縮包文件常以gz為後綴。使用-k參數保留源文件:

gzip -k ./* 
gzip -rkv ./* 遞歸壓縮

解壓也很簡單:

gzip -dv test.gz 

bzip2

tar命令使用-j參數將文件打包為tar.bz2時,便調用了bzip2進行壓縮。bzip2壓縮或解壓後,會將源文件刪除。如果需要保留源文件,可使用-k參數:

bzip2 -zk test  
bzip2 -dk test.bz2  

rar/unrar

rar和unrar命令並非linux發行版自帶命令,需要另外安裝。常見用法如下:

rar a test.tar test  #將test文件壓縮為test.tar
rar e test.rar       #解壓test.tar
unrar x test.rar     #解壓test.tar

壓縮率比較

壓縮率一般來說:

tar.bz2>tar.gz>zip>tar

壓縮率越高,壓縮以及解壓的時間也就越長。

總結

對文件進行壓縮能夠節省磁碟空間,進行網絡傳輸時,也能節省帶寬,但是需要注意的是,空間和時間是需要根據實際應用進行權衡的。解壓縮命令較多,為避免在其他平臺使用不便,可選擇常用命令進行壓縮文件。

有任何補充或建議,歡迎留言^_^。

相關文章:

Linux常用命令--文本查看篇

Linux常用命令--系統狀態篇

相關焦點

  • Linux常用命令:Linux more命令使用方法
    more 是我們最常用的工具之一,最常用的就是顯示輸出的內容,然後根據窗口的大小進行分頁顯示,然後還能提示文件的百分比。
  • Linux下解壓命令
    Linux下的壓縮文件格式五花八門,因此相應的解壓和壓縮的工具也是五花八門,例如7z,gz2,bz2,rar,gizp, tar……
  • 那些又當爹又當媽時攢下來的linux常用命令
    linux基本命令,傾城奉獻,不容錯過。2. copy 文件夾,正如linux的拷貝命令cp一樣,加上 -r就可以了,即: scp -r 文件夾 遠程目錄。tmp/etc.tar.gz 參考:http://www.cnblogs.com/li-hao/archive/2011/10/03/2198480.html11、zip解壓縮 zip命令可以用來將文件壓縮成為常用的zip格式。
  • Linux下使用tar命令
    因為不可能同時壓縮與解壓縮。輔助選項:-z :是否同時具有 gzip 的屬性?亦即是否需要用 gzip 壓縮或解壓? 一般格式為xx.tar.gz或xx. tgz-j :是否同時具有 bzip2 的屬性?亦即是否需要用 bzip2 壓縮或解壓?一般格式為xx.tar.bz2-v :壓縮的過程中顯示文件!
  • linux最常用的命令
    【cd命令】 -- cd 目錄名 意為切換目錄 常用例子:cd ~ 進入家目錄cd ..常用命令:tail -f 循環讀取 常用於查看遞增的日誌文件tail -n 10 1.log 從後向前讀10行文件內容【which命令】 --- 搜索 查找 在linux中查找某個文件,但不知道放哪裡了,可以使用which命令常用命令:which ls 查看ls命令是否存在which which 查看which
  • Linux中常用命令
    :備份與壓縮ar:創建、修改歸檔文件和從歸檔文件中提取文件arj:.arj文件壓縮指令bunzip2:壓縮bzip2格式的壓縮文件bzcat:解壓縮文件到標準輸出bzip2:創建.bz2格式的壓縮文件bzip2recover:修復損壞的.bz2文件bzless/bzmore:解壓縮.bz2文件並分屏顯示內容compress:壓縮數據文件
  • Linux常用命令
    1.常用命令命令英文作用lslist查看當前文件夾下的內容pwdprint work directory查看當前所在文件夾
  • Linux常用命令詳解
    常用查看日誌文件。which命令在linux要查找某個文件,但不知道放在哪裡了,可以使用下面的一些命令來搜索:which     查看可執行文件的位置。它將首先匹配所有的文件然後再進入子目錄中查找find / -name "CON.FILE" -depth -printchmod命令用於改變linux系統文件或目錄的訪問權限。用它控制文件或目錄的訪問權限。該命令有兩種用法。一種是包含字母和操作符表達式的文字設定法;另一種是包含數字的數字設定法。
  • linux常用命令總結
    >壓縮解壓縮命令① gzip 英文:GNU zip 命令路徑:/bin/gzip 執行權限:所有用戶作用:壓縮(解壓)文件,壓縮文件後綴為.gz gzip只能壓縮文件作用:壓縮(解壓)文件,壓縮文件後綴為.bz2語法:bzip2 [-k] [文件] -k:產生壓縮文件後保留原文件(壓縮比高)-d 解壓縮的參數(decompress)解壓使用
  • CentOS「linux」學習筆記8:壓縮和解壓類命令
    linux基礎操作:主要介紹了壓縮和解壓類命令1.gzip/gunzip[打包壓縮解壓文件,打包壓縮後為.gz格式]例子1:gzip /home/test/hello.go 表示將test目錄下的hello.go文件打包壓縮
  • linux命令大全
    雖然,大部分人最熟悉的還是WINDOWS用戶,但是總有各種各樣的原因讓我們選擇linux,不論因為何種原因開始接觸linux,但都希望大家儘快進入到Linux的世界裡,玩轉Linux高手,最終發現linux的可愛之處。本文將linux命令大致分為了10個部分:文件管理、磁碟管理、文檔編輯、文件傳輸、磁碟維護、網絡通訊、系統管理、系統設置、備份壓縮、設備管理。各位看官可將本文收藏,以備將來不時之需。
  • linux作業系統常用命令及常用問題
    一、linux作業系統常用命令>linux作業系統詳解(linux不再難懂)●man :任何時候你覺得對一個命令行不是很確定,都可以通過輸入「man + 命令」了解這個命令能確切是做什麼的。
  • Linux常用命令 - sed
    使用 sed 搜索和替換文本的一般形式如下:sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE-i 將其輸出寫入標準輸出seds 替代命令,可能是 sed 中使用最多的命令-/分隔符字符。
  • 1000+個常用的Linux命令!
    ,準確的確定某一個命令到底是屬於內部命令還是外部命令,我們可以通過type命令來查看具體位置。常用案例遞歸刪目錄中所有內容刪除當前目錄下的所有文件及目錄需要注意文件一旦通過rm命令刪除,則無法恢復,所以必須格外小心地使用該命令。
  • Linux基礎命令之:實驗內容及小結
    命令為:su-root(4)查看cross-3.3.2.tar.bz2所在的Windows下對應分區的格式,並記下其文件設備名稱,如「/dev/hda1」等。命令為:fdisk-l(5)使用mkdir命令在「/mnt」新建子目錄作為掛載點。命令為:mkdir/mnt/win(6)掛載Windows相應分區。
  • Linux下文件(文件夾)的壓縮和解壓
    前言在linux下,當我們上傳一個較大的文件或者要安裝一個軟體(如tomcat、mysql等)時,我們需要先將官網下載的壓縮包在linux伺服器上進行解壓,再進行安裝。Linux文件文件夾的壓縮和解壓1.zip命令例如:zip -r mysql.zip mysql 該句命令的含義是:將mysql文件夾壓縮成mysql.zipzip -r abcdef.zip abc def.txt 這句命令的意思是將文件夾abc和文件def.txt壓縮成一個壓縮包abcdef.zip2
  • Linux文件的常用操作命令
    linux文件操作常用指令1、系統命令runlevel # 查看當前的運行級別systemctl status firewalld # 開啟網絡服務功能stop # 關閉restart # 重啟reload # 重載reboot # 重啟halt # 關機poweroff # 關機2、查看文件常用命令cat # 在命令提示符下查看文件內容more # 在命令提示符中分頁查看文件內容
  • linux每日命令(31):tar命令
    linux每日命令(31):tar命令tar命令可以為linux的文件和目錄創建檔案。
  • 每天一個 Linux 命令(28):tar 命令
    ,解壓縮,打包,解包等,這時候tar命令就是是必不可少的一個功能強大的工具。linux中最流行的tar是麻雀雖小,五臟俱全,功能強大。tar命令可以為linux的文件和目錄創建檔案。利用tar,可以為某一特定文件創建檔案(備份文件),也可以在檔案中改變文件,或者向檔案中加入新的文件。tar最初被用來在磁帶上創建檔案,現在,用戶可以在任何設備上創建檔案。
  • Linux 壓縮、解壓、打包詳解
    所以這篇筆記就是整理常見的那些解壓、壓縮、打包的命令。在正式學習之前,需要明確的兩個概念,打包和壓縮不是一回事:壓縮:則是將一個大文件通過壓縮算法變成一個小文件。為什麼要區分這兩個概念呢?這源於Linux 中很多壓縮程序只能針對一個文件進行壓縮,這樣當你想要壓縮一大堆文件時,你得先將這一大堆文件先打成一個包(tar命令),然後再用壓縮程序進行壓縮(gzip bzip2命令)。