实现该功能需要安装 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. ualias命令详解

    基础命令学习目录首页 原文链接:https://blog.csdn.net/yexiangcsdn/article/details/82782667 个人分类: Linux Command 所属专栏: ...

  2. Shell 字符串处理、获取文件名和后缀名

    http://blog.csdn.net/guojin08/article/details/38704823

  3. 成功安装Python-myqldb

    试过很多其他的都不行 http://www.centoscn.com/CentosBug/softbug/2017/0424/8737.html

  4. M1阶段的开发过程的一些反思

    今天八组队伍都做了项目的展示,和他们相比,我们的团队项目是显得最单薄的了,这里面的原因很多,固然我们团队整体的实力 比较弱,但是我们在M1项目开发过程中的种种错误表现也是导致我们项目失利的重要原因.下 ...

  5. Daily Srum 10.26

    Daily Scrum Meeting 虽然TFS的相关使用已经在上面贴出来一段时间,但是要运用TFS还是有些困难的,特别是TFS的代码管理机制,所以我们让部分人先弄清楚,然后再教授给其他人.终于大家 ...

  6. No.1000_第五次团队会议

    光辉的一夜 今夜注定是不平凡的一夜.是崔强同学伟大的一夜. 昨天因为实验室项目,我刚上完编译课就被学院叫走去做项目,当时我就很无奈,因为说好了要和崔强一起实现下午的前端,他写界面我写底层逻辑,这样我们 ...

  7. Alpha阶段产品功能说明

    先展示一下我们的功能流程图吧~ 一.学生用户 1. 学生登陆注册 BuaaClubs是北航所有在校生都可以注册登录的网站. 登陆界面是这样哒~ 2. 浏览报名活动 同学们可以在这个网站上查看所有社团发 ...

  8. java中的装箱与拆箱

    什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象实例的时候,我们会这样: Class a = ...

  9. Week2-作业1:阅读与博客

    Week2-作业1:阅读与博客 第一章 :概论 1. 原文如下: 移山公司程序员阿超的宝贝儿子上了小学二年级,老师让家长每天出30道加减法题目给孩子做.阿超想写一个小程序来做这件事,具体实现可以采用很 ...

  10. Tensorflow踩坑之tf.nn.bidirectional_dynamic_rnn()报错 “ValueError: None values not supported.”

    详细解决方法见链接:https://stackoverflow.com/questions/39808336/tensorflow-bidirectional-dynamic-rnn-none-val ...