1. 想要獲取進度,必須知道解壓之後總檔案的大小
2.下面來獲取linux中常用的兩種壓縮方式,檢視解壓之後的檔案大小
(1) tar.xz
examples.tar.xz
$xz --robot -l examples.tar.xz
name examples.tar.xz
file 1 157 646599460 1966622720 0.329 crc32 0
totals 1 157 646599460 1966622720 0.329 crc32 0 1
646599460 這個是當前壓縮檔案的大小.1966622720這個解壓之後檔案大小,我們記為total_size.待會需要用到這個值.
(2)tar.gz
examples.tar.gz
$gzip -l examples.tar.gz
compressed uncompressed ratio uncompressed_name
77736 266240 70.8% examples.tar.gz
77736 壓縮檔案大小, 266240 解壓之後大小,我們記為 total_size.
3. tar 選項
(1) -b, --blocking-factor blocks
blocks x 512 bytes per record
這個用於計算乙個記錄塊是大小.是512的倍數
(2)--checkpoint
display progress messages every numberth record (default 10)
這個用進度條顯示資訊,檢測資料點的位置,是record為單位
(3)--checkpoint-action=action
execute action on each checkpoint
這個是每個checkpoint,可以自定義輸出你想的資訊
4. -b --checkpoint 引數如何設定
-b 進度條一般為100%顯示.那麼計算公式為:(total_size/512)/100+1 = 這個值就是乙個record的大小.
(除512是因為,以512為單位,除100是因為是百分制,即100%進度條,加1是因為小於512的補償,以防出大於100%的進度)
--checkpoint 設定為1即可,因為為了方便,所以也不用設定record的倍數了.仔細一想都能理解.
5.附上乙個簡易指令碼
$cat unpack_progress.sh
#!/bin/sh
total_size=`xz --robot -l $1 | grep 'totals' | awk ''`
echo "total_size:$total_size"
block_size=`expr $total_size / 51200`
block_size=`expr $block_size + 1`
tar --blocking-factor=$block_size --checkpoint=1 --checkpoint-action='ttyout=unpack %u% \r' -xvf $1 -c $2
顯示效果:
$ ./unpack_progress.sh rootfs.tar.xz ./rootfs > /dev/null
unpack 59%
orzdba 監控獲取 輸出全解 原理系列
orzdba好用的不要不要的 threads threads run con cre cac 0 0 0 0 200 202 0 0 201 202 0 0 201 202 0 0 201 202 0 0 innodb hit hit lor hit 0 100.00 385098 98.00 39...
解耦,獲取jar包中的資料
需求 獲取自定義jar包中某個方法的執行日誌資訊 需要打包的jar中 定義介面,日誌記錄 author version 1.0 description 日誌記錄 date 2021 2 28 16 12 public inte ce logrecord外部要呼叫的方法 author version ...
Struts使用用解耦合的方式獲取Session
constant name struts.devmode value true 在servlet中可以通過 servlet api 來獲取session 在struts中如何獲取 session呢?解析 將使用者名稱放入session 兩種方案 1.與 servlet api 解耦的訪問方式 01....