网站搜索

Pv - 在 Linux 中显示 [复制/备份/压缩] 数据的进度


在 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 选项。
  • 要显示整数百分比的进度信息而不是视觉指示,请使用 -n 选项。当使用pv与dialog命令来在对话框中显示进度时,这可能会很好。

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文件写入U盘:

dd if=debian-10.11.0-amd64-DVD-1.iso | pv | dd of=/dev/sda bs=4M

6. 使用pvdialog基于终端的工具一起创建对话框进度条,如下所示。

tar -czf - ./Documents/ | (pv -n > backup.tgz) 2>&1 | dialog --gauge "Progress" 10 70

概括

这是一个很好的基于终端的工具,您可以与不具备此功能的工具一起使用,以监视操作的进度,例如复制/移动/备份文件,有关更多选项,请查看 man pv

我希望这篇文章对您有所帮助,如果您对使用 pv 命令有任何想法可以发表评论。如果您在使用过程中遇到任何错误,也可以留言。