如何使用“pv”命令监控(复制/备份/压缩)数据的进度
在 Linux 系统上进行备份和复制/移动大型文件时,您可能希望监视正在进行的操作的进度。许多终端工具不具备允许您在管道中运行命令时查看进度信息的功能。
在本文中,我们将介绍一个重要的 Linux/Unix 命令,即pv – Pipe Viewer。
Pv是一个基于终端的工具,可用于监视通过管道发送的数据的进度。使用pv命令时,它会直观地显示以下信息:
- 已經逝去的时间。
- 完成的百分比包括进度条。
- 显示当前的吞吐率。
- 传输的总数据量。
- 以及ETA(预计到达时间)。
如何在 Linux 中安装 pv 命令?
大多数 Linux 发行版上都没有默认安装 pv命令,因此您可以按照以下步骤安装它。
在基于 RHEL 的 Linux 上安装 pv
首先,您需要打开EPEL 存储库,然后运行以下yum或dnf命令来安装它。
# yum install pv OR # dnf install pv
在基于 Debian 的 Linux 上安装 pv
$ sudo apt-get install pv
在其他 Linux 发行版上安装 pv
$ sudo emerge -a pv [On Gentoo Linux] $ sudo apk add pv [On Alpine Linux] $ sudo pacman -S pv [On Arch Linux] $ sudo zypper install pv [On OpenSUSE]
如何在 Linux 中使用 pv 命令?
pv主要用于其他缺乏监控正在进行的操作进度能力的程序。你可以将它放在两个进程之间的管道中,并使用适当的选项来使用它。
pv的标准输入将传递到其标准输出,进度(输出)将打印在标准错误上。它的行为类似于Linux 中的cat 命令。
pv命令的语法如下:
$ pv file $ pv options file $ pv file > filename.out $ pv options | command > filename.out $ comand1 | pv | command2
pv使用的选项分为三类:显示开关、输出修改器和常规选项。
Pv 显示修改器选项
一些选项位于显示修饰符下。
- 要打开显示栏,请使用该
-p
选项。 - 要查看已用时间,请使用该
--timer
选项。 - 要打开 ETA 计时器以尝试猜测完成操作需要多长时间,请使用该
--eta
选项。猜测基于之前的传输速率和总数据大小。 - 要打开速率计数器,请使用该
--rate
选项。 - 要显示迄今为止传输的数据总量,请使用该
--bytes
选项。 - 要显示整数百分比的进度信息而不是视觉指示,请使用该选项。当使用pv和 dialog 命令在对话框中显示进度
-n
时,这会很有用。
Pv 显示修改器选项
一些选项位于输出修饰符下。
- 要等到第一个字节传输完成后再显示进度信息,请使用该
--wait
选项。 - 在计算百分比和 ETA 时,假设要传输的数据总量为SIZE
--size SIZE
字节,请使用选项。 - 要指定更新之间的秒数,请使用该
--interval SECONDS
选项。 - 使用
--force
选项强制执行操作。当标准错误不是终端时,此选项强制 pv 显示视觉效果。 - 常规选项是
--help
显示使用信息,–version显示版本信息。
Linux 中的 Pv 命令及其示例
1.当不包含任何选项时,pv命令将使用默认的-p
、-t
、-e
和选项运行。-r
-b
例如,要将opensuse.vdi文件复制到/tmp/opensuse.vdi,请运行此命令并观看截屏视频中的进度条。
# pv opensuse.vdi > /tmp/opensuse.vdi
2.要从 /var/log/syslog 文件创建 zip 文件,请运行以下命令。
# pv /var/log/syslog | zip > syslog.zip
3.要计算/etc/hosts文件中的行数、字数和字节数,同时仅显示进度条,请运行以下命令。
# pv -p /etc/hosts | wc
4.使用tar 实用程序监控创建备份文件的进度。
# tar -czf - ./Downloads/ | (pv -p --timer --rate --bytes > backup.tgz)
5.在示例中,我们使用dd 命令将 ISO 文件写入 USB 闪存驱动器:
# dd if=debian-10.11.0-amd64-DVD-1.iso | pv | dd of=/dev/sda bs=4M
6.使用pv和基于对话框终端的工具一起创建一个对话框进度条,如下所示。
# tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70
概括
这是一个很好的基于终端的工具,你可以将它与没有此功能的工具一起使用,以监视复制/移动/备份文件等操作的进度,有关更多选项,请检查man pv。
我希望这篇文章对你有帮助,如果你对使用 pv 命令有任何想法,可以发表评论。如果你在使用它时遇到任何错误,也可以发表评论。