1. 程式人生 > >Linux下檔案的打包、解壓縮指令——tar,gzip,bzip2

Linux下檔案的打包、解壓縮指令——tar,gzip,bzip2

  本文是對 鳥叔的Linux私房菜(基礎學習篇) 第三版 的學習筆記,原文可參考原書中文網站 鳥叔的Linux私房菜。更多詳細資訊可直接參考對應Linux命令的 man 幫助( 如 man tar)。

  在Linux環境下,對於檔案的操作更多通過命令列指令而不是單純的滑鼠點選,而檔案管理中一個重要的操作便是壓縮和加壓操作。通過檔案的壓縮和解壓,可以使得檔案佔用更少的儲存空間,也可以讓檔案傳輸更加便捷。本文主要介紹Linux下常用的打包指令和解壓縮指令,並介紹不同的壓縮檔案拓展名的區別。

檔案字尾的含義

隨著壓縮技術的發展,Linux環境下提供的壓縮指令和格式開始變多。為了便於使用者區分不同壓縮檔案使用的不同壓縮技術,進而使用合適的指令進行操作,一般使用字尾標識檔案在壓縮或打包過程中所使用的壓縮技術。常見的字尾有以下幾種:

複製程式碼
*.Z           //    compress程式壓縮產生的檔案(現在很少使用)
*.gz          //    gzip程式壓縮產生的檔案
*.bz2         //    bzip2程式壓縮產生的檔案
*.zip     //   zip壓縮檔案

*.tar         //    tar程式打包產生的檔案
*.tar.gz      //    由tar程式打包並由gzip程式壓縮產生的檔案
*.tar.bz2     //    由tar程式打包並由bzip2程式壓縮產生的檔案
複製程式碼

  從字尾可以看出,gzip、bzip2、tar指令是在打包和壓縮過程中較為常用的指令。

壓縮命令——gzip、bzip2

  gzip

  gzip可以壓縮產生字尾為 .gz 的壓縮檔案,也可以用於解壓gzip、compress等程式壓縮產生的檔案。不帶任何選項和引數使用gzip或只帶有引數 - 時,gzip從標準輸入讀取輸入,並在標準輸出輸出壓縮結果。

  gzip的常用指令選項如下:  

複製程式碼
基礎格式: gzip [Options] file1 file2 file3
指令選項:(預設功能為壓縮)
-c       //將輸出寫至標準輸出,並保持原檔案不變
-d       //進行解壓操作
-v       //輸出壓縮/解壓的檔名和壓縮比等資訊
-digit     //digit部分為數字(1-9),代表壓縮速度,digit越小,則壓縮速度越快,但壓縮效果越差,digit越大,則壓縮速度越慢,壓縮效果越好。預設為6.
複製程式碼

  注意,使用 gzip 指令壓縮/解壓檔案均會使得原始檔消失,即原始檔會被直接解壓/壓縮而不保留備份。若想要保留原檔案可以使用 -c 引數結合資料流重定向操作(見下例)。

  gzip exp1.txt exp2.txt     //分別將exp1.txt和exp2.txt壓縮,且不保留原檔案。注意對於多個檔案引數是將多個檔案分別進行壓縮,而不是壓縮在一起。參考下文 tar 指令。

  gzip -dv exp1.gz       //將exp1.gz解壓,並顯示壓縮比等資訊。

  gzip -cd exp1.gz > exp.1    //將exp1.gz解壓的結果放置在檔案exp.1中,並且原壓縮檔案exp1.gz不會消失

  特別注意第三條例項, -d 指示解壓縮,-c 引數是將結果輸出至標準輸出,通過 > 符號,將原本輸出至標準輸出的解壓結果重定向至exp.1中,既解壓了檔案,原壓縮檔案也沒有消失。

  注:對應於 gzip,可以使用 gunzip 進行解壓操作,效果類似gzip -d xx,同時可以使用zcat讀取壓縮檔案的內容並顯示在標準輸出,功能類似於 gzip -c xx.

  bzip2

bzip2是採用更好壓縮演算法的壓縮程式,一般可以提供較之gzip更好的壓縮效果。其具有與gzip相似的指令選項,壓縮產生 .bz2 字尾的壓縮檔案。

  bzip2的常用指令選項如下:

複製程式碼
基礎格式: bzip2 [Options] file1 file2 file3
指令選項:(預設功能為壓縮)
-c       //將輸出寫至標準輸出
-d       //進行解壓操作
-v       //輸出壓縮/解壓的檔名和壓縮比等資訊
-k       //在壓縮/解壓過程中保留原檔案
-digit     //digit部分為數字(1-9),代表壓縮速度,digit越小,則壓縮速度越快,但壓縮效果越差,digit越大,則壓縮速度越慢,壓縮效果越好。預設為6.
複製程式碼

  bzip2 exp1.txt exp2.txt       //分別將exp1.txt和exp2.txt壓縮,且不保留原檔案。

  bzip2 -dv exp1.bz2       //將exp1.bz2解壓,並顯示壓縮比等資訊。

  bzip2 -kd exp1.bz2         //將exp1.bz2解壓,並且原壓縮檔案exp1.bz2不會消失

  注:對應於 bzip2,可以使用 bunzip2 進行解壓操作,效果類似bunzip2 -d xx,同時可以使用bzcat讀取壓縮檔案的內容並顯示在標準輸出,功能類似於 bzip2 -c xx.

打包指令——tar

  上文已經提到,gzip 或 bzip2 帶有多個檔案作為引數時,執行的操作是將各個檔案獨立壓縮,而不是將其放在一起進行壓縮。這樣就無法產生類似於Windows環境下的資料夾打包壓縮的效果。(gzip與bzip2也可以使用資料夾作為引數,使用 -f 選項,但也是將其中的每個檔案獨立壓縮)。為了實現打包壓縮的效果,可以使用命令 tar 進行檔案的打包操作(archive),再進行壓縮。

  tar 指令可以將檔案打包成檔案檔案(archive)儲存在磁碟/磁帶中,打包操作一般伴隨壓縮操作,也可以使用 tar 指令對打包壓縮後的檔案解壓。

  tar 常用命令引數如下:

複製程式碼
基本格式:tar [Options] file_archive  //注意tar的第一引數必須為命令選項,即不能直接接待處理檔案
常用命令引數:
//指定tar進行的操作,以下三個選項不能出現在同一條命令中
-c        //建立一個新的打包檔案(archive)
-x        //對打包檔案(archive)進行解壓操作
-t        //檢視打包檔案(archive)的內容,主要是構成打包檔案(archive)的檔名

//指定支援的壓縮/解壓方式,操作取決於前面的引數,若為建立(-c),則進行壓縮,若為解壓(-x),則進行解壓,不加下列引數時,則為單純的打包操作
-z        //使用gzip進行壓縮/解壓,一般使用.tar.gz字尾
-j        //使用bzip2進行壓縮/解壓,一般使用.tar.bz2字尾

//指定tar指令使用的檔案,若沒有壓縮操作,則以.tar作為字尾
-f filename   //-f後面接操作使用的檔案,用空格隔開,且中間不能有其他引數,推薦放在引數集最後或單獨作為引數
         //檔案作用取決於前面的引數,若為建立(-c),則-f後為建立的檔案的名字(路徑),若為(-x/t),則-f後為待解壓/檢視的打包壓縮檔名

//其他輔助選項
-v        //詳細顯示正在處理的檔名
-C Dir      //將解壓檔案放置在 -C 指定的目錄下
-p(小寫)     //保留檔案的許可權和屬性,在備份檔案時較有用
-P(大寫)     //保留原檔案的絕對路徑,即不會拿掉檔案路徑開始的根目錄
--exclude=file //排除不進行打包的檔案
複製程式碼

  常見的tar指令操作如下:

複製程式碼
 壓縮: 

 tar -cvjpf etc.tar.bz2 /etc  //-c為建立一個打包檔案,相應的-f後面接建立的檔案的名稱,使用了.tar.bz2字尾,-j標誌使用bzip2壓縮,最後面為具體的操作物件/etc目錄

 檢視:
 tar -tvjf etc.tar.bz2     //-t為檢視操作,則-f對應所檢視的檔案的名稱,檔案字尾顯示使用bzip2進行壓縮,所以加入-j選項,-v會顯示詳細的許可權資訊

 解壓
 tar -xvjf etc.tar.bz2     //-x為解壓操作,則-f指定的是解壓使用的檔案,檔案字尾顯示使用bzip2進行壓縮,所以加入-j選項,即使用bzip2解壓
                   //若只解壓指定打包檔案中的一個檔案,在上述指令的最後加上帶解壓檔名作為引數即可
複製程式碼

  注意:使用tar打包的檔案會儲存原有的檔案路徑,並預設取出了所有成員檔案路徑的根目錄,如下圖

  

  這樣做的目的在於,當用戶在某一目錄如/home/haha目錄下進行解壓操作時,tar會將解壓出來的檔案路徑與當前目錄拼接,即為 /home/haha/etc/emacs,從而將檔案解壓在當前目錄下。(如果還有印象,目錄名也可以使用 -C 選項指定)但若是打包壓縮時不取出檔案路徑的根目錄,則會按照儲存的絕對路徑如/etc/emacs解壓檔案,可能將/etc檔案下的相應檔案覆蓋掉,當然在進行備份和恢復時該操作是有效的。tar提供 -P選項來保留檔案路徑的根目錄。

zip檔案相關命令 -- unzip

  unzip 命令與之前的 tar 指令類似,具有對 zip 檔案進行檢視、測試和解壓的功能。

複製程式碼
基本格式:unzip [Options] file[.zip]    //不接任何Options時,預設將指定的file檔案解壓至當前資料夾,可同時接受多個檔案引數
常用命令引數:
//壓縮檔案內容檢視
-Z        //以形如 ls -l 的格式顯示目標檔案內容,實際原理是命令第一個引數為-Z時,其餘引數會被視為 zipinfo 的引數,併產生對應效果  
-Z1        //僅顯示壓縮檔案內容的檔名,更多顯示可檢視 zipinfo 命令的 man 幫助
-l        //顯示壓縮檔案中包括時間、佔用空間和檔名等資訊,內容上較 -Z 更簡單

//檔案測試
-t        //在記憶體中解壓檔案並進行檔案的完整性校驗(CRC校驗)

//解壓縮引數,注意unzip預設即為解壓操作
-f        //注意與 tar 命令不同,unzip指定 -f 引數時,則將磁碟上已經存在且內容新於對應磁碟檔案的壓縮內容解壓出來
-n        //解壓縮時不覆蓋已存在的檔案(而是跳過)
-q        //安靜模式,僅解壓縮而不輸出詳細資訊
-d dir      //將檔案解壓至dir指定的資料夾中
複製程式碼

  可以使用unzip命令對zip檔案進行相關的操作。

  (1)檢視壓縮檔案的所有檔名(注意 -Z 選項表示之後所有的引數被視為 zipinfo 的引數並輸出相應結果) -> unzip -Z1 file.zip

  (2)測試檔案的完整性 -> unzip -t file.zip

  (3)將檔案解壓至當前使用者的主目錄 -> unzip  -q file.zip  -d ~

相關推薦

Linux檔案打包壓縮指令——targzipbzip2

  本文是對 鳥叔的Linux私房菜(基礎學習篇) 第三版 的學習筆記,原文可參考原書中文網站 鳥叔的Linux私房菜。更多詳細資訊可直接參考對應Linux命令的 man 幫助( 如 man tar)。  在Linux環境下,對於檔案的操作更多通過命令列指令而不是單純的滑鼠點選,而檔案管理中一個重要的操作便是

Linux檔案傳輸壓縮檔案

第一次在伺服器上部署專案檔案,謹慎慢又慢,搜了那麼多命令也是瞎,直接簡單上手得多舒服 1.上傳本地檔案到linux,linux下載檔案到本地命令 1)sz命令傳送檔案到本地:[ ]# sz filename 2)rz命令本地上傳檔案到伺服器:[ ]# rz 開啟對應的

linux檔案和目錄的壓縮和解壓(gzipbzip2tar

檔案的壓縮和解壓: 注意:區分Linux系統中檔案和目錄的區別 首先說一下打包和壓縮的概念: 打包是指將一大堆檔案或目錄什麼的變成一個總的檔案; 壓縮則是將一個大的檔案通過一些壓縮演算法變成一個小檔案。 常見的壓縮副檔名: 副檔名

每天一個Linux命令----(壓縮壓縮targzip

1 下載了一個原始碼檔案abc.tar.gz或abc.tgz(字尾tar.gz和tgz基本沒啥區別,相同的還有.taz和.tar.Z) tar -xzvf abc.tar.gz 或tar -xzvf abc.tgz 註釋: tar.gz和tgz是經過歸

linux 壓縮壓縮命令 tar zip unzip

tar命令: 利用tar命令,可以把一大堆的檔案和目錄全部打包成一個檔案,這對於備份檔案或將幾個檔案組合成為一個檔案以便於網路傳輸是非常有用的。 首先要弄清兩個概念:打包和壓縮。打包是指將一大堆檔案或目錄變成一個總的檔案;壓縮則是將一個大的檔案通過一些壓縮

Linux檔案同步備份神器之-------rsync

   對於運維人員,資料備份是日常重要而又必須做的工作,選擇一種好的備份軟體效率會大大提升。rsync 就是一款功能強大,高效,安全,速度快的檔案增量傳輸工具。   一 、什麼是rync ?     1. rsync ---- remote synchronize  ,是一款

linuxrar包的壓縮方法

1.rz sz命令安裝 yum install lrzsz  rz test.rar 2.下載安裝rar軟體 wget http://www.rarlab.com/rar/rarlinux-3.8.0

linux各種打包壓縮檔案字尾及其壓縮方法.gz.tar.gztgz...

對於剛剛接觸Linux的人來說,一定會給Linux下一大堆各式各樣的檔名給搞暈。別個不說,單單就壓縮檔案為例,我們知道在Windows下最常見的壓縮檔案就只有兩種,一是,zip,另一個是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.tar等眾多的壓縮檔名,此外windo

Linux檔案壓縮軟體安裝

1、linux常用解壓縮命令:.zip格式  解壓:unzip  檔名.zip   壓縮:zip  檔名.zip  目錄名 .tar格式  壓縮:tar  cvf  檔名.tar  檔名

Linux檔案打包壓縮並分割成指定大小

轉自https://blog.csdn.net/loongembedded/article/details/54233175 Linux解壓檔案時遇到的問題,不知道總的資料是分了好多份,需要輸入命令統一解壓 1、普通tar壓縮命令 tar -zcvf

Linux檔案壓縮壓縮命令

本文介紹了linux下的壓縮命令tar、gzip、gunzip、bzip2、bunzip2、compress 、uncompress、 zip、 unzip、rar、unrar等,以及如何使用它們對.tar、.gz 、.tar.gz、.tgz、.bz2、.tar.bz2、.Z、. t

Linux使用者組檔案許可權詳

使用者組 在linux中的每個使用者必須屬於一個組,不能獨立於組外。在linux中每個檔案有所有者、所在組、其它組的概念 - 所有者 - 所在組 - 其它組 - 改變使用者所在的組 所有者 一般為檔案的建立者,誰建立了該檔案,就天然的成為該檔案的所有者

Linux檔案壓縮

對於剛剛接觸Linux的人來說,一定會給Linux下一大堆各式各樣的檔名給搞暈。別個不說,單單就壓縮檔案為例,我們知道在Windows下最常見的壓縮檔案就只有兩種,一是,zip,另一個是.rap。可是Linux就不同了,它有.gz、.tar.gz、tgz、bz2、.Z、.ta

linux命令行打包壓縮壓縮

例如 打包並壓縮 多文件 css clas 文件後綴名 nbsp www linux命令 使用命令: tar 打包: tar -zcvf 目標文件 源文件或文件夾 目標文件為要打包成的文件的文件名, 打包後文件的 格式取決於目標文件的後綴名 單文件或文件夾打包 tar

Linux打包壓縮tar命令!

tar.gz 安裝 gin font log 針對 更新 mil emp 本文介紹了linux下的打包壓縮程序tar、gzip、gunzip、bzip2、bunzip2、 compress、uncompress、zip、unzip、rar、unrar程序,以及如何使用它們對

Linux】【二】linux 壓縮文件(txt)查看壓縮文件內容壓縮文件

str tool div png gun medium spa clas info 通過Xshell 壓縮文件、解壓縮文件 gzip  tools.txt        壓縮【tools.txt】文件 zcat  tools.txt.gz       查看壓縮文件

linux基礎3-磁碟和檔案系統相關 LINUX支援哪些檔案系統 linux磁碟分割槽詳 圖文(fdisk;mkfs)

一 dumpe2fs :    在Linux使用過程中,我們如果要了解檔案系統的配置情況,可以使用dumpe2fs檢視ext2/ext3/ext4格式的檔案系統資訊。 命令格式: dumpe2fs [選項] 裝置 常用選項: -h  僅列出超級塊中的資訊

開啟運維之路之第 3 篇——目錄作用介紹檔案搜尋其它命令壓縮使用者管理

1、目錄作用介紹 我們先切換到系統根目錄 / 看看根目錄下有哪些目錄 [[email protected] ~]# cd / [[email protected] /]# ls 說明: 根目錄下的bin和sbin,usr目錄下的bin和sbin,這四

linux檔案的建立時間訪問時間修改時間和改變時間

   Linux系統中沒有命令可以確切的檢視一個檔案的生成時間,但是可以知道訪問時間,修改時間,改變時間。 可以通過stat命令檢視一個檔案的訪問時間,修改時間,改變時間: 以下為三個時間的區別: 1、訪問時間(accesstime):讀取一次檔案的內容,該時間

linux操作mysqlnginxvim操作檔案許可權設定等

inux下操作mysql、nginx,vim操作,檔案許可權設定等 #在Linux系統下,預設所有系統配置檔案都在/etc這個路徑下的 #Linux環境下安裝mysql資料庫 ##1、切換到root許可權下,採用yum命令安裝 同時安裝mariadb的客戶端和服務端