当前位置:   article > 正文

linux xz gz tar 获取解压进度条_tar文件解压进度条怎么看

tar文件解压进度条怎么看

1. 想要获取进度,必须知道解压之后总文件的大小

2.下面来获取linux中常用的两种压缩方式,查看解压之后的文件大小

 (1)  tar.xz

   examples.tar.xz     

  1. $xz --robot -l  examples.tar.xz
  2. name examples.tar.xz
  3. file 1 157 646599460 1966622720 0.329 CRC32 0
  4. totals 1 157 646599460 1966622720 0.329 CRC32 0 1

   646599460  这个是当前压缩文件的大小.1966622720这个解压之后文件大小,我们记为total_size.待会需要用到这个值.

 (2)tar.gz

  examples.tar.gz

  1. $gzip -l examples.tar.gz
  2. compressed uncompressed ratio uncompressed_name
  3. 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.附上一个简易脚本

  1. $cat unpack_progress.sh
  2. #!/bin/sh
  3. total_size=`xz --robot -l $1 | grep 'totals' | awk '{print $5}'`
  4. echo "total_size:$total_size"
  5. block_size=`expr $total_size / 51200`
  6. block_size=`expr $block_size + 1`
  7. tar --blocking-factor=$block_size --checkpoint=1 --checkpoint-action='ttyout=unpack %u% \r' -xvf $1 -C $2
  8. 显示效果:
  9. $ ./unpack_progress.sh rootfs.tar.xz ./rootfs > /dev/null
  10. unpack 59%

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/334976
推荐阅读
相关标签
  

闽ICP备14008679号