標籤:
一、壓縮
(1.1)使用gzip進行打包:
# time tar -zcf tar1.tar binlog*
real 0m48.497s
user 0m38.371s
sys 0m2.571s
(1.2)使用pigz壓縮,同時設定最高壓縮速度(-1)
# time tar -cv binlog* | pigz -1 -p 24 -k >pigz1.tar.gz
real 0m10.715s
user 0m17.674s
sys 0m1.699s
(1.3) 使用pigz壓縮,預設壓縮比
# time tar -cv binlog* | pigz -p 24 -k >pigz2.tar.gz
real 0m22.351s
user 0m39.743s
sys 0m1.341s
(1.4)使用pigz壓縮,同時設定最高壓縮比(-9)
# time tar -cv binlog* | pigz -9 -p 24 -k >pigz3.tar.gz
real 0m46.975s
user 1m26.118s
sys 0m1.473s
(1.5) 使用lz4壓縮,同時設定最高壓縮速度(-1)
# time tar -cv binlog* | lz4 -1 > lz41.tar.gz
real 0m4.969s
user 0m2.953s
sys 0m1.199s
(1.6) 使用lz4壓縮,使用預設設定
# time tar -cv binlog* | lz4 > lz42.tar.gz
real 0m4.447s
user 0m2.958s
sys 0m1.185s
(1.7) 使用lz4壓縮,同時設定最高壓縮比(-9)
# time tar -cv binlog* | lz4 -9 > lz43.tar.gz
real 0m56.144s
user 0m54.300s
sys 0m1.301s
以上方式的打包壓縮後檔案大小
127M tar1.tar (1.1)
152M pigz1.tar.gz (1.2)
127M pigz2.tar.gz (1.3)
123M pigz3.tar.gz (1.4)
216M lz41.tar.gz (1.5)
216M lz42.tar.gz (1.6)
163M lz43.tar.gz (1.7)
二、解壓縮:
(2.1)直接使用tar -xvf解壓縮tar檔案
# time tar -xvf tar1.tar
real 0m42.329s
user 0m9.134s
sys 0m2.704s
(2.2) 直接使用tar -xvf解壓縮pigz打包的檔案(pigz壓縮的檔案可以使用tar直接解壓縮)
# time tar -xvf pigz1.tar.gz
real 0m42.048s
user 0m9.818s
sys 0m2.927s
(2.3)使用pigz -d對pigz壓縮檔進行解壓
# file=pigz1.tar && pigz -k -d $file.gz && time tar -xf $file
real 0m56.706s
user 0m0.074s
sys 0m2.588s
(2.4)不可使用tar -xvf解壓lz4壓縮的檔案
# time tar -xvf lz41.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now
(2.5)使用lz4 -d對lz4壓縮檔進行解壓
# file=lz41.tar && lz4 -d $file.gz $file && time tar -xf $file
Successfully decoded 1203701760 bytes
real 0m59.851s
user 0m0.064s
sys 0m2.699s
三、結論:
從上列資料可以總結出以下結論:
1.使用pigz指命明顯比gzip快(網上說法是5倍),但同時CPU消耗也比較大(網上說法是8倍左右),兩者壓縮後檔案大小無異。
2.使用lz4能獲得很好的壓縮速度,但壓縮的檔案比用gzip和pigz稍大。
3.pigz壓縮的檔案可以直接用tar -x指令解壓縮,而使用lz4壓縮的檔案不可。
從實現資料來看,如果目前系統想提高壓縮解壓縮速率,可以考慮切換到pigz壓縮方式,不過會增大cpu消耗。在對壓縮效率要求較高、但對短時間內CPU消耗較高不受影響的情境,使用pigz非常合適。
lz4,pigz,gzip 3者比較