实现该功能需要安装 pv,然后把需要处理的数据通过管道传给 pv,最后再进行操作。

传给 pv 的目的是为了知道已经处理的数据量大小,同时需要通过 -s 指定总共需要处理的数据量大小。

pv 的安装一般的软件管理工具都有提供:

如 centos 下 yum install pv

ubuntu : apt-get install pv

mac:brew install pv

pv 的详细用法可参考:https://linux.die.net/man/1/pv

压缩:

mac:

tar -cf - questions.sql | pv -s $(($(du -sk questions.sql | awk '{print $1}') * 1024)) | gzip > question.tar.gz

  

其他系统(ubuntu、centos ...):

tar -cf - questions.sql | pv -s $(du -sk questions.sql | awk '{print $1}') | gzip > question.tar.gz

该命令将 questions.sql 压缩到 question.tar.gz。

命令详解:

tar -cf 我们知道 -f 是指定目标文件,这里 -f 后面是 - , 代表将需要压缩的数据输出到 stdout(标准输出),这样管道的后面才可以接收到需要处理的数据。

pv 命令的作用是,将输入复制一遍然后输出到 stdout,这样最后的 gzip 命令才有数据可以处理,最后通过 gzip 命令把前面的输出处理之后保存到 question.tar.gz。

pv -s 后面一串的命令是获取需要处理的所有数据的大小(单位:字节),mac 下 du -sk 获取到的数值是以 k 为单位的,而其他 *nix 系统则不一样,参数需要改为 du -sb,同时也不需要再乘以 1024。

解压:

pv question.tar.gz | tar -zxf -

  

解压命令没那么多参数,因为需要解压的文件大小已经确定,不需要我们手动计算一遍。

上面的命令通过 pv 读取需要解压的文件到 stdout,然后通过管道传递给 tar 命令,tar 命令从标准输入获取要处理的数据进行解压。

附 tar 压缩显示进度小脚本:

#!/bin/bash

if [[ $1 = '' ]]; then
echo "参数缺失,用法 'tarpv 文件名/目录名'"
exit 1
fi tar -cf - "$1" | pv -s $(($(du -sk "$1" | awk '{print $1}') * 1024)) | gzip > $1.tar.gz

  

tar 命令显示进度条的更多相关文章

  1. PHP生成linux命令行进度条

    <?php$total = 100; for ($i = 1; $i <= $total; $i++) { printf("progress: [%-50s] %d%% Done ...

  2. 任务栏显示进度条 CreateComObject(CLSID_TaskbarList) as ITaskbarList4

    http://www.cnblogs.com/jxsoft/archive/2011/06/02/2067712.html //在任务栏显示 进度条 unit Unit9; interface use ...

  3. Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)

    Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现) 相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦 ...

  4. WPF下载远程文件,并显示进度条和百分比

    WPF下载远程文件,并显示进度条和百分比 1.xaml <ProgressBar HorizontalAlignment="Left" Height="10&quo ...

  5. (委托事件处理)关于多线程执行显示进度条的实例(转)&&线程间操作无效: 从不是创建控件“rtxtEntryNO”的线程访问它。

    关于多线程执行显示进度条的实例! 之前回答了一篇关于怎么在线程中操作进度条的帖子,估计有人看的不是很明白今天没事,写了一个小小的实例,很简单,就2个文件权当抛砖引玉,希望有更好解决方案的人发表一下意见 ...

  6. android标题栏(titlebar)显示进度条

    在后台线程中执行各种操作(网络连接.大数据存储)的时候,我们希望让客户能看到后台有操作在进行,那么既能有效的提示用户,又不占用当前操作空间,最好的方法就是在标题栏有个进度条. [代码] [Java]代 ...

  7. ProgressIndicator显示进度条以及一些文字信息

    //ProgressIndicator可以显示进度条以及一些文字信息,不过这个属性一般都在cs文件中操作. private void PhoneApplicationPage_Loaded(objec ...

  8. VC下载文件 + 显示进度条

    在codeproject里找了许久,发现这样一个VC下载文件并显示进度条的源码,于是添加了些中文注释: 1.下载线程函数: UINT DownloadFile(LPVOID pParam) { CWn ...

  9. VC下载文件显示进度条

    VC下载文件显示进度条 逗比汪星人2009-09-18上传   by Koma http://blog.csd.net/wangningyu http://download.csdn.net/deta ...

随机推荐

  1. JavaScript设计模式-----模板方法模式

    模板方法模式是一种只需要使用继承就可以实现的非常简单点的模式. 模板方法模式有两部分组成,第一部分是抽象父类,第二部分是具体的实现子类.通常在抽象父类中封装了子类的算法框架,包括实现 一些公共方法以及 ...

  2. yarn (npm) 切换设置镜像源

    设置镜像源 1.查看一下当前源 yarn config get registry 2.切换为淘宝源 yarn config set registry https://registry.npm.taob ...

  3. axios常用操作

    axios常用操作 一:函数化编程 1:编写可复用的方法 axios(config)的方法中,有必须的url参数和非必须的options参数.所以我们可以先写一个接受这两个参数的方法,在这个方法中我们 ...

  4. CF 1100C NN and the Optical Illusion(数学)

    NN is an experienced internet user and that means he spends a lot of time on the social media. Once ...

  5. 第九次psp例行报告

    本周psp 本周进度条 代码累积折线图 博文字数累积折线图 饼状图

  6. 关于注册github

  7. 读书笔记 之 java编程思想3

    现在已经读到第二章  ,这个发现好多已经能都知道了  但是还是有自己比较生疏的比如说就是 储存到什么地方:书中介绍五种储存的地方 分别为1储存器,2堆栈,3堆4常量储存 5非RAM储存,java的出来 ...

  8. spring冲刺第三天

    昨天完成了环境配置和初步的地图设想. 今天从网上找了有关这方面的例子,运行试验了一番.编写的地图画面在程序上运行了一下,有些错误,还需要很多方面的改进. 这些例子有很多地方都不太懂,但还是看完了.我认 ...

  9. 为什么使彩色图变灰RGB的权重会固定(R:0.299 G:0.587 B:0.114)?

    人眼对绿色的敏感度最高,对红色的敏感度次之,对蓝色的敏感度最低,因此使用不同的权重将得到比较合理的灰度图像.根据实验和理论推导得出以下数值 R: 0.299. G:  0.587. B: 0.114.

  10. beta冲刺7/7

    队名:Boy Next Door 燃尽图 代码写入 https://github.com/mangoqiqi/paybook/tree/master/Desktop/Web%E8%B4%A6%E5%8 ...