Linux下打包、壓縮和解壓
命令使用: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
這條命令是解出
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 s1把s1文件使用gzip方式壓縮(s1.gz),並替換原文件(s1)
gzip -c s1 > s1.gz把s1文件壓縮,並另存為s1.gz
gzip -d s1.gz把s1.gz解壓,並替換原文件
gzip -dc s1.gz > s1把s1.gz解壓,並另存為s1
gzip -v s1顯示壓縮過程
gzip -t s1.gz檢查壓縮文件的完整性
gzip -l s1.gz顯示壓縮文件s1的壓縮後大小 未壓縮大小 壓縮比 未壓縮前的名字
gzip -5 -c s1 > s1.gz以壓縮比5(-num可選值為1~9,1是最快壓縮,等價於--fast,9是最高壓縮,等價於--best)將s1文件壓縮並另存為s1.gz
zcat 壓縮包名,不解壓在STDOUT顯示壓縮文件的內容
PS:出現gzip:unknown suffix --ignored,說明欲解壓的文件未帶gz後綴。(使用mv重命名即可解決或gzip -d -c 未帶gz後綴的壓縮文件 > 解壓後的名字)
bzip2壓縮程序:(bzip2 -h顯示幫助)
bzip2 s1把s1使用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(-num同gzip)
PS:bzip -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後綴
bzcat與zcat作用一樣
xz壓縮程序:(xz -h顯示幫助)
類似bzip2。
UNIX-like的軟件都遵循這個標準:一個工具只做一件事情,所以在linux上打包和壓縮是兩個獨立的概念,上述講到的壓縮程序gzip bzip2 xz都只能壓縮一個文件,不能壓縮目錄,要壓縮目錄需要先通過tar程序打包。
Linux下打包、壓縮和解壓