本文介紹tar、7z指令的使用方法php
在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是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
在上述示例中,演示了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