pv:给任意管道加上进度条

用 pv 监控复制文件、写镜像、SSH 传输时的进度、速率和预计剩余时间。

Linux管道进度吞吐量高风险
在管道中间插入 pv(如 pv 文件 | dd of=...)即可显示实时进度条;无法得知总量时用 -s 指定大小。

01命令

命令
$ pv big.iso | dd of=/dev/sdX bs=4M && tar -cf - dir | pv -s $(du -sb dir | cut -f1) | ssh host 'tar -xf -'

02作用说明

管道默认毫无反馈——往 U 盘 dd 镜像或 tar over ssh 传输可能静默卡上几分钟。pv 插在两个阶段之间,统计流过的字节数并显示百分比、已用时间、当前速率和预计剩余时间;从管道读入时它需要通过 -s 给出预期总量(如 $(du -sb 目录 | cut -f1))才能算出百分比。-L 可以限速,-n 则输出机器可读的百分比供脚本使用。

03风险

风险高风险
使用条件pv package
!注意: 需要安装 pv 包(通常不预装);用 dd 写设备时目标会被不可逆地覆盖。

04撤销

✓无需撤销——该命令不会改变持久状态。

05来源

  • pv(1) — Arch Linux manual
    Arch Linux · technical · 2026-09-17
    依据: Documents -p progress, -b bytes, -r rate, -s size and -L rate-limit options
  • pv(1) — Ubuntu manpage
    Canonical · technical · 2026-09-17
    依据: pv shows progress, elapsed time, throughput and ETA for data through a pipe; -s sets expected total size, -L limits rate

最后验证: 2026-09-17 · 分类: 文件与文件夹