http://www.javashuo.com/article/p-uhencump-ex.htmlhtml
經常使用的格式有:
tar, tar.gz(tgz), tar.bz2,算法
不一樣方式,壓縮和解壓方式所耗CPU時間和壓縮比率也差別也比較大。測試
1. tar
只是打包動做,至關於歸檔處理,不作壓縮;解壓也同樣,只是把歸檔文件釋放出來。spa
(1)打包歸檔格式:code
tar -cvf examples.tar files|dir #說明: -c, --create create a new archive 建立一個歸檔文件 -v, --verbose verbosely list files processed 顯示建立歸檔文件的進程 -f, --file=ARCHIVE use archive file or device ARCHIVE 後面要馬上接被處理的檔案名,好比--file=examples.tar #舉例: tar -cvf file.tar file1 #file1文件 tar -cvf file.tar file1 file2 #file1,file2文件 tar -cvf file.tar dir #dir目錄
(2)釋放解壓格式:htm
tar -xvf examples.tar (解壓至當前目錄下) tar -xvf examples.tar -C /path (/path 解壓至其它路徑) #說明: -x, --extract, extract files from an archive 從一個歸檔文件中提取文件 #舉例: tar -xvf file.tar tar -xvf file.tar -C /temp #解壓到temp目錄下
2. tar.gz tgz (tar.gz和tgz只是兩種不一樣的書寫方式,後者是一種簡化書寫,等同處理)
這種格式是Linux下使用很是廣泛的一種壓縮方式,
兼顧了壓縮時間(耗費CPU)和壓縮空間(壓縮比率)
其實這是對tar包進行gzip算法的壓縮blog
(1)打包壓縮格式:進程
tar -zcvf examples.tgz examples (examples當前執行路徑下的目錄) 說明: -z, --gzip filter the archive through gzip 經過gzip壓縮的形式對文件進行歸檔 舉例: tar -zcvf file.tgz dir #dir目錄
(2)釋放解壓格式:ip
tar -zxvf examples.tar (解壓至當前執行目錄下) tar -zxvf examples.tar -C /path (/path 解壓至其它路徑) 舉例: tar -zcvf file.tgz tar -zcvf file.tgz -C /temp
3 tar.bzget
Linux下壓縮比率較tgz大,即壓縮後佔用更小的空間,使得壓縮包看起來更小。
但同時在壓縮,解壓的過程倒是很是耗費CPU時間。
(1)打包壓縮格式:
tar -jcvf examples.tar.bz2 examples (examples爲當前執行路徑下的目錄) 說明: -j, --bzip2 filter the archive through bzip2 經過bzip2壓縮的形式對文件進行歸檔 舉例: tar -jcvf file.tar.bz2 dir #dir目錄
(2)釋放解壓:
tar -jxvf examples.tar.bz2 (解壓至當前執行目錄下) tar -jxvf examples.tar.bz2 -C /path (/path 解壓至其它路徑) 舉例: tar -jxvf file.tar.bz2 tar -jxvf file.tar.bz2 -C /temp
4 gz
壓縮:
gzip -d examples.gz examples
解壓:
gunzip examples.gz
5 zip
zip 格式是開放且免費的,因此普遍使用在 Windows、Linux、MacOS 平臺,要說 zip 有什麼缺點的話,就是它的壓縮率並非很高,不如 rar及 tar.gz 等格式。
壓縮:
zip -r examples.zip examples (examples爲目錄)
解壓:
zip examples.zip
6 .rar
壓縮:
rar -a examples.rar examples
解壓:
rar -x examples.rar
壓縮比率,佔用時間對比
爲了保證可以讓壓縮比率較爲明顯,需選取一個內容較多、佔用空間較大的目錄做爲本次實驗的測試。
找了一個大概有23G的目錄來測試,首先要明確因爲執行環境的變化,偏差在所不免
首先明確一個概念:
壓縮比率=原內容大小/壓縮後大小,壓縮比率越大,則代表壓縮後佔用空間的壓縮包越小
.tar
打包: time tar -cvf test.tar /usr/test 時間: real 3m20.709s user 0m3.477s sys 0m42.595s 大小: 打包前:23214680 打包後:22202984 耗時:3m20.709s 壓縮比率:22202984/23214680 解壓: time tar -xvf test.tar 大小: 解壓前:22202984 解壓後:23211064 耗時: real 2m47.548s user 0m4.999s sys 1m14.186s
.tgz
打包壓縮: time tar -zcvf test.tgz /usr/test 時間: real 16m30.767s user 16m1.394s sys 1m7.391s 大小: 打包前:23211064 打包後:18949032 耗時: 壓縮比率: 解壓: tar -zxvf test.tar 大小: 解壓前:18949032 解壓後:23211064 耗時: real 3m52.418s user 2m46.325s sys 1m21.442s
.tar.bz2
打包壓縮: time tar -jcvf test.tar.bz2 /usr/test 時間: real 80m39.422s user 80m14.599s sys 0m58.623s 大小: 打包前:23211064 打包後:18728904 耗時:80m39.422s 壓縮比率: 解壓: time tar -jxvf test.tar.bz2 時間: real 27m54.525s user 27m44.108s sys 1m43.645s 大小: 解壓前:18728904 解壓後:23211064
綜上結果,初步結論:
綜合起來,在壓縮比率上: tar.bz2>tgz>tar
佔用空間與壓縮比率成反比: tar.bz2<tgz<tar
耗費時間(打包,解壓)
打包:tar.bz2>tgz>tar
解壓: tar.bz2>tar>tgz
從效率角度來講,固然是耗費時間越短越好
所以,Linux下對於佔用空間與耗費時間的折衷多選用tgz格式,不只壓縮率較高,並且打包、解壓的時間都較爲快速,是較爲理想的選擇。
結論:
再一次印證了物理空間與時間的矛盾(想佔用更小的空間,獲得高壓縮比率,確定要犧牲較長的時間;反之,若是時間較爲寶貴,要求快速,那麼所得的壓縮比率必定較小,固然會佔用更大的空間了)。