首页/数据/备份与容灾速查/pv 查看备份进度

pv 查看备份进度

在管道中插入 pv 显示速率与进度,让长时间的打包、压缩与异地复制过程可见,便于判断备份窗口是否够用。

备份与容灾速查数据更新于 2026-10-13

pv 是什么

pv(Pipe Viewer)是一段插在管道中间的监控程序:数据从它流过时原样输出,同时把已传输数据量、速率、进度百分比与预计剩余时间打到终端。备份、压缩、异地复制这类动辄几小时的操作原本没有任何反馈,pv 让过程可见,便于判断备份窗口够不够、瓶颈在哪一段。

基本信息

适用平台Linux/Unix,多数发行版需单独安装 pv
用法插在管道中间:生产者 | pv [选项] | 消费者
常用参数-s 预估总字节数、-p 百分比、-r 速率、-t 已用时间、-e 剩余时间
安静模式-n 只输出数字,适合写日志或脚本解析
命名-N 给监控点起名,多段管道时区分
权限要求普通用户即可,读写目标文件仍需对应权限

典型使用场景

  • 判断大目录打包与压缩还需要多久,提前决定是否延长窗口
  • 异地复制时观察实际吞吐,确认是否受限于网络或磁盘
  • 压缩比未知时看传输的字节数,而不是盯着跳动百分比
  • 多步骤流水线里定位瓶颈段:在每一段之间插一个命名监控点
  • 把长任务进度写进日志,事后复盘窗口占用是否合理

进度可视化

进度可视化
# 先估算总字节数,打包压缩时显示百分比
tar -cf - /data | pv -s $(du -sb /data | awk '{print $1}') | zstd -T0 > /backup/data.tar.zst
# 走 SSH 异地复制,显示实时速率
tar -cf - /data | pv -r -t | ssh backup@10.0.0.5 'cat > /backup/data.tar'
# 只关心速率,百分比会误导(输出体积未知)
tar -cf - /data | pv -r > /dev/null
# 多段管道给每个监控点命名,便于区分
tar -cf - /data | pv -N pack | zstd -T0 | pv -N compress > /backup/data.tar.zst

输出字段读法

字段含义正常/异常
已传输量pv 从流中读过的数据字节数长时间不动说明上游阻塞或卡住
速率当前平均速率与单位远低于链路或磁盘能力时排查瓶颈段
进度百分比仅在 -s 给定总量时出现没有 -s 时不会有百分比
已用/剩余时间-t 与 -e 输出剩余时间持续变大说明速率在下降
监控点名称-N 指定的标签多段管道未命名会分不清是哪一段
pv 会把数据读进自己的缓冲区再写出,等于多一次拷贝,并有管道缓冲带来的额外延迟。超大文件传输前先用小样本测一次吞吐,避免进度显示本身成为瓶颈。
总量估算不准会让百分比跳动:du 统计的是当前占用(稀疏文件会小于逻辑大小),而 tar 打包出来可能是逻辑大小。估不准就固定看速率与已传输量,判断更实际。

易错点

  • 一条管道上插多个 pv 又不命名:多行进度互相覆盖,反而看不清
  • 把 pv 的输出留在自动化脚本里:终端控制字符污染标准输出,脚本解析出错,应加 -n 或重定向
  • 用压缩后的体积变化推断进度:压缩率是动态的,进度条会来回跳
  • 备份命令本身失败却只看进度条:退出码要单独判断,进度走完不代表备份成功

数据来源与参考

  • pv(1) 手册(Pipe Viewer)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌