1. 程式人生 > >Linux下打包、壓縮和解壓

Linux下打包、壓縮和解壓

可選 通過 算法 是把 保留 .tar.xz best 性能 簡單

命令使用:tar 主選項+輔選項 壓縮後文件名 要壓縮的文件

-c 建立壓縮文件(常用)

-x 解壓(常用)

-t 查看壓縮文件(常用)

-r 向壓縮文件末尾追加文件

-u 更新一個壓縮包中的文件

上述五個參數是主選項,是互斥的(只能出現其中的一個),所有的歸檔操作都需要用到其中的一個,可以和輔選項連用:

-z 使用gzip壓縮

-j 使用bz2壓縮

-J 使用xz壓縮

-Z 使用compress壓縮(compress,已被bzip代替)

-v 顯示過程

-w 每壓縮一個文件都需要確認(不常用)

-O 解開到標準輸出STDOUT(不常用)

-f 指定壓縮包名,切記!這個參數最後出現,後面接壓縮包名,也是必選參數

# tar -cf all.tar *.jpg

這條命令是將所有.jpg的文件打成一個名為all.tar的包。-c是表示產生新的包,-f指定包的文件名。

# tar -rf all.tar *.gif

這條命令是將所有.gif的文件增加到all.tar的包裏面去。-r是表示增加文件的意思。

# tar -uf all.tar logo.gif

這條命令是更新原來tar包all.tar中logo.gif文件,-u是表示更新文件的意思。

# tar -tf all.tar

這條命令是列出all.tar包中所有文件,-t是列出文件的意思

# tar -xf all.tar

這條命令是解出

all.tar包中所有文件,-t是解開的意思,如果需要解壓到特定目錄加-C參數,tar -xf all.tar -C dirname

3種壓縮方式:

壓縮方式

參數

特性

gzip

z

.gz早期的壓縮方式,壓縮性能小,但是快

bzip2

j

.bz2中期的壓縮方式,壓縮能力中

xz

J

.xz現在常用的壓縮方式,壓縮能力強,速度慢

PS:使用什麽方式壓縮,解壓時也必須使用此方式!

# tar -czvf /mnt/etc.tar.gz /etc

//對/etc文件夾使用gzip方式進行壓縮,壓縮後存放為/mnt/etc.tar.gz

# tar -cjvf /mnt/etc.tar.bz2 /etc

//對/etc文件夾使用bzip2方式進行壓縮,壓縮後存放為/mnt/etc.tar.bz2

# tar -cJvf /mnt/etcz.tar.xz /etc

//對/etc文件夾使用xz方式進行壓縮,壓縮後存放為/mnt/etcz.tar.xc

# tar -xzvf /mnt/etc.tar.gz -C /liu

//對/mnt/etc.tar.gz進行解壓,如果想指定解壓後的文件存放位置,需要-C參數來指定

# tar -xjvf /mnt/etc.tar.bz2 -C /liu

//對/mnt/etc.tar.bz2進行解壓,如果想指定解壓後的文件存放位置,需要-C參數來指定

# tar -xJvf /mnt/etcz.tar.xz -C /liu

//對/mnt/etcz.tar.xz進行解壓,如果想指定解壓後的文件存放位置,需要-C參數來指定

簡單的說一下打包(打包文件,歸檔文件)和壓縮(壓縮文件,壓縮包文件,壓縮包),打包是把一堆文件或一個目錄(文件夾)合成一個文件,壓縮是把一個文件通過某種算法將其占用容量變小。

tar是打包命令,gzip等是壓縮命令。

tar -cf file file1 file2 file3把三個文件打包成一個文件file

tar -cf file dir把dir目錄打包成一個文件file

tar -xf file解壓打包文件

tar -czf file file1 file2 file3把三個文件先打包成一個文件,然後調用gzip壓縮

tar -xzf file解壓經過gzip壓縮的打包文件

gzip壓縮程序:(gzip -h顯示幫助)

gzip s1s1文件使用gzip方式壓縮(s1.gz),並替換原文件(s1

gzip -c s1 > s1.gzs1文件壓縮,並另存為s1.gz

gzip -d s1.gzs1.gz解壓,並替換原文件

gzip -dc s1.gz > s1s1.gz解壓,並另存為s1

gzip -v s1顯示壓縮過程

gzip -t s1.gz檢查壓縮文件的完整性

gzip -l s1.gz顯示壓縮文件s1的壓縮後大小 未壓縮大小 壓縮比 未壓縮前的名字

gzip -5 -c s1 > s1.gz以壓縮比5-num可選值為1~91是最快壓縮,等價於--fast9是最高壓縮,等價於--best)將s1文件壓縮並另存為s1.gz

zcat 壓縮包名,不解壓在STDOUT顯示壓縮文件的內容

PS:出現gzip:unknown suffix --ignored,說明欲解壓的文件未帶gz後綴。(使用mv重命名即可解決或gzip -d -c 未帶gz後綴的壓縮文件 > 解壓後的名字)

bzip2壓縮程序:(bzip2 -h顯示幫助)

bzip2 s1s1使用bzip2方式壓縮(s1.bz2),並替換原文件(s1)

bzip2 -k s1同上,但是保留原文件

bzip2 -c s1 > s1.bz2同上

bzip2 -t s1.bz2測試壓縮包完整性

bzip -kv s1壓縮時顯示執行過程,需要更詳細的過程,指定兩次該參數,bzip -kvv s1

bzip -d s1.bz2解壓縮,並替換原文件

bzip -dk s1.bz2同上,但是保留原文件

bzip -dc s1.bz2>s1同上

bzip -5 -k s1-numgzip

PSbzip -k -c s1>s1_stdout.bz2,這時-k參數失效,只會出現s1_stdout.bz2壓縮包

出現bzip2:can’t guess original name for XXX -- using XXX.out,意思是解壓時提供的壓縮包沒有bz2後綴,bzip2程序嘗試以bzip2解壓,並把解壓出的文件添上out後綴

bzcatzcat作用一樣

xz壓縮程序:(xz -h顯示幫助)

類似bzip2

UNIX-like的軟件都遵循這個標準:一個工具只做一件事情,所以在linux上打包和壓縮是兩個獨立的概念,上述講到的壓縮程序gzip bzip2 xz都只能壓縮一個文件,不能壓縮目錄,要壓縮目錄需要先通過tar程序打包。

Linux下打包、壓縮和解壓