tar、7z(7zip)壓縮/解壓縮指令的使用

本文介紹tar、7z指令的使用方法php

tar指令

Linux中,使用的最多的壓縮/解壓縮指令就是tar指令了。linux

tar指令用來將多個文件/目錄結構打包。在實際使用中,每每使用tar對壓縮的支持,即同時進行打包和壓縮兩步操做。經常使用的如下幾種文件格式能夠由tar指令生成。算法

.tar ~ 僅對文件/目錄結構進行打包操做,不壓縮;工具

.tar.gz ~ 對文件/目錄結構進行打包,並按照gzip格式進行壓縮;測試

.tar.bz2 ~對文件/目錄結構進行打包,並按照bz2格式進行壓縮;rest

.tar.xz ~對文件/目錄結構進行打包,並按照LZMA算法進行壓縮(Linux內核使用此格式發佈);ip

指令格式

$ tar --helpget

用法: tar [選項...] [FILE]...it

GNU 'tar' saves many files together into asingle tape or disk archive, and canclass

restore individual files from the archive.

Examples:

tar-cf archive.tar foo bar # Createarchive.tar from files foo and bar.

tar-tvf archive.tar # List all filesin archive.tar verbosely.

tar-xf archive.tar # Extract allfiles from archive.tar.

tar指令的經常使用選項以下列表所示:

-c: 創建壓縮檔案

-x:解壓

-t:查看內容

-r:向壓縮歸檔文件末尾追加文件

-u:更新原壓縮包中的文件

這五個是獨立的命令,壓縮解壓都要用到其中一個,能夠和別的命令連用但只能用其中一個。下面的參數是根據須要在壓縮或解壓檔案時可選的。

-z:有gzip屬性的

-j:有bz2屬性的

-J:有xz屬性的

-v:顯示全部過程

-C:切換到某個目錄下執行tar指令

-f: 使用檔案名字,切記,這個參數是最後一個參數,後面只能接檔案名。(必須加此參數)

使用示例

$cd ~/study

$rm –rf *

$mkdir –p d1/d11

$mkdir d2

$touch d1/d11/f1.c

$touch d2/f2.php

$cd ../

#$tar czf study.tar.gz study/ ~ 打包並執行.gz格式壓縮

#$tar cjf study.tar.bz2 study/ ~ 打包並執行.bz2格式壓縮

$tar cJf study.tar.xz study/ ~ 打包並執行.xz格式壓縮

#$tar tf study.tar.gz ~ 查看壓縮包內的目錄列表

#$tar tf study.tar.bz2 ~ 查看壓縮包內的目錄列表

$tar tf study.tar.xz ~ 查看壓縮包內的目錄列表

study/

study/d1/

study/d1/d11/

study/d1/d11/f1.c

study/d2/

study/d2/f2.php

$rm –rf study

#$tar xzf study.tar.xz ~ 解壓縮.gz格式的壓縮包到當前目錄

#$tar xjf study.tar.xz ~ 解壓縮.bz2格式的壓縮包到當前目錄

$tar xJf study.tar.xz ~ 解壓縮.xz格式的壓縮包到當前目錄

$ls

study.tar.xz study

$tar xJf study.tar.xz -C / ~ 將壓縮包解壓到根目錄下

$ ls /

bin Cygwin.bat Cygwin-Terminal.ico etc lib proc tmp var

cygdrive Cygwin.ico dev home opt study usr

更多信息

$man tar

7z指令

7z是7zip壓縮工具的經常使用壓縮文件格式。7zip是一個開源的壓縮工具,軟件自己十分小巧,功能強大,是目前公認的壓縮比最大的壓縮解壓縮軟件,近年來開始漸漸流行。

7zip支持衆多的壓縮格式,支持7z, XZ,BZIP2, GZIP, TAR, ZIP格式的壓縮/解壓縮。支持CAB, ISO, RAR, RPM, XAR, Z等衆多格式的解壓縮。

程序退出代碼0表示正常,沒有錯誤。

命令格式

$ 7z --help

Usage: 7z <command>[<switches>...] <archive_name> [<file_names>...]

[<@listfiles...>]

經常使用的command以下:

a 添加文件到壓縮文件

d 從壓縮文件中刪除文件

e 從壓縮文件中解壓縮文件,不包含目錄結構

l 列出壓縮包中的內容

t 測試壓縮文件

u更新文件到壓縮文件

x從壓縮文件中解壓縮,包含目錄結構

使用示例

$ rm * -rf

$ mkdir -p study/d1/d11 study/d2

$ touch study/d1/d11/f1.c study/d2/f2.php

$ 7z a study.7z study/ ~ 將study整個目錄添加到壓縮包study.7z中

Scanning

Creating archive study.7z

Everything is Ok

$ 7z t study.7z ~ 測試壓縮包

Processing archive: study.7z

 

Testing study/d1/d11/f1.c

Testing study/d2/f2.php

Testing study/d2

Testing study/d1/d11

Testing study/d1

Testing study 

Everything is Ok

$ rm -rf study

$ 7z x study.7z ~ 解壓縮包到當前目錄

Processing archive: study.7z

Extracting study/d1/d11/f1.c

Extracting study/d2/f2.php

Extracting study/d2

Extracting study/d1/d11

Extracting study/d1

Extracting study 

Everything is Ok

$ 7z d study.7z study/d2/f2.php ~ 刪除壓縮包中的指定文件

Updating archive study.7z

Everything is Ok

$ 7z t study.7z ~ 測試壓縮包

Processing archive: study.7z 

Testing study/d1/d11/f1.c

Testing study/d2

Testing study/d1/d11

Testing study/d1

Testing study 

Everything is Ok

$ 7z l study.7z ~ 查看壓縮包中的目錄結構

Listing archive: study.7z

--

Path = study.7z

Type = 7z

Solid = -

Blocks = 0

Physical Size = 152

Headers Size = 152 

study/d1/d11/f1.c

study/d2

study/d1/d11

study/d1

study

$ 7z u study.7z study/d1/d11/f1.c ~ 更新壓縮包中的指定文件

Scanning

Updating archive study.7z

Compressing study/d1/d11/f1.c

Everything is Ok

$ 7z l study.7z ~ 查看壓縮包中的目錄結構

Listing archive: study.7z

--

Path = study.7z

Type = 7z

Method = LZMA

Solid = -

Blocks = 1

Physical Size = 260

Headers Size = 186 

study/d1/d11/f1.c

study/d2

study/d1/d11

study/d1

study 

7zip的壓縮格式控制

在上述示例中,演示了7z壓縮/解壓縮指令的使用。在使用7z進行壓縮/解壓縮時,壓縮格式是根據命令中提供的壓縮包的文件後綴名來識別的。例如,7z a study.zip study/ 將目錄樹study按照zip格式進行壓縮,7z a study.7z study/將目錄樹study按照7z格式進行壓縮。反之,解壓縮時,壓縮格式也是根據壓縮包文件名後綴自動識別的。

對於7zip和tar的各類壓縮格式(tar.gz tar.bz2 tar.xz)之間的兼容,能夠參考以下實現。

$ 7z a study4.tar study ~ step1 先按tar格式進行打包

#按照實驗結果推斷,本條指令與tar cf study4.tar study 具備相同效果

Scanning

Creating archive study4.tar

Compressing study

Compressing study/d1

Compressing study/d1/d11

Compressing study/d1/d11/f1.c

Compressing study/d2

Compressing study/d2/f2.php

Everything is Ok

$ 7z a study4.tar.gz study4.tar ~ 將已打包的文件進行按gzip格式壓縮

Scanning

Creating archive study4.tar.gz

Compressing study4.tar

Everything is Ok

$tar tf study4.tar ~ 使用tar指令測試文件包,無錯誤

study/

study/d1/

study/d1/d11/

study/d1/d11/f1.c

study/d2/

study/d2/f2.php

$tar tf study4.tar.gz ~ 使用tar指令測試壓縮包,無錯誤

study/

study/d1/

study/d1/d11/

study/d1/d11/f1.c

study/d2/

study/d2/f2.php

$ rm study -rf

$tar xzvf study4.tar.gz ~ 使用tar解壓縮由7z生成的.tar.gz壓縮包,成功。

study/

study/d1/

study/d1/d11/

study/d1/d11/f1.c

study/d2/

study/d2/f2.php

$ rm *.*

$ ls

study

$tar czf study4.tar.gz study ~ 使用tar指令生成.tar.gz格式壓縮包

$ 7z x study4.tar.gz ~ 使用7z解壓縮tar生成的壓縮包,成功

Processing archive: study4.tar.gz

Extracting study4.tar

Everything is Ok

$ 7z x study4.tar ~ 使用7z進一步解壓,成功

Processing archive: study4.tar

Extracting study

Extracting study/d1

Extracting study/d1/d11

Extracting study/d1/d11/f1.c

Extracting study/d2

Extracting study/d2/f2.php

Everything is Ok

$

$tar cvf study5.tar study ~ 使用tar建立無壓縮的文件包

study/

study/d1/

study/d1/d11/

study/d1/d11/f1.c

study/d2/

study/d2/f2.php

$ 7z a study5.tar.bz2 study5.tar ~ 使用7zip將文件包壓縮

Scanning

Creating archive study5.tar.bz2

Compressing study5.tar

Everything is Ok

$tar tf study5.tar.bz2 ~ 使用tar測試壓縮包

study/

study/d1/

study/d1/d11/

study/d1/d11/f1.c

study/d2/

study/d2/f2.php

$ 7z x study5.tar.bz2 ~ 使用7zip解壓縮壓縮包

Processing archive: study5.tar.bz2

file study5.tar

Extracting study5.tar

Everything is Ok

$ rm -rf study

$ 7zx study5.tar ~ 使用7zip還原tar指令生成的文件包

Processing archive: study5.tar

Extracting study

Extracting study/d1

Extracting study/d1/d11

Extracting study/d1/d11/f1.c

Extracting study/d2

Extracting study/d2/f2.php

Everything is Ok

$ rm study -rf

$tar xjvf study5.tar.bz2 ~ 使用tar解壓縮tar+7zip生成的.tar.bz2壓縮包

study/

study/d1/

study/d1/d11/

study/d1/d11/f1.c

study/d2/

study/d2/f2.php

相關文章
相關標籤/搜索