Rsync 复制文件时显示进度条
我是 Unix 新用户。我正在使用 rsync 上传和下载大型文件。有没有办法显示文件的进度条?如何在 Linux 或类 Unix 操作系统上使用 rsync 本地或远程复制文件时显示进度?
rsync 是一款免费的开源工具。它对于复制本地或远程文件非常有用。它通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。您可以使用以下任一选项在将文件从服务器 A 复制到服务器 B 或反之亦然时添加总进度指示器。
rsync 是一款免费的开源工具。它对于复制本地或远程文件非常有用。它通过仅发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量。您可以使用以下任一选项在将文件从服务器 A 复制到服务器 B 或反之亦然时添加总进度指示器。
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 不 |
要求 | Linux 或 Unix 上的 rsync 命令 |
预计阅读时间 | 3 分钟 |
- rsync命令与--progress选项。
- pv命令 – 监控数据或通过管道传输数据的进度。对于大多数用户来说,这是一个推荐选项。
rsync 命令显示进度条
您需要使用--progress或-P选项来显示文件传输过程中的进度。语法如下:
rsync --progress source dest rsync -P source dest rsync [options] --progress source dest rsync -av --progress /path/to/*.mp3 /nfs rsync -av --progress /path/to/*.avi -e user@remote.example.com:/data ############################################################### ## The following only works with the latest version of rsync ## ############################################################### rsync -av --info=progress2 source dest rsync -av --info=progress2 /path/to/*.avi -e user@remote.example.com:/data ## See the pv command below for more info & syntax ##
示例:Rsync 在 Linux 中显示进度条
要将文件从 /foo/*.tar.gz 复制到名为 server1.example.com 的远程服务器,请输入:
rsync -av -P /foo/*.tar.gz example@server1.example.com:~
或者
rsync -av --progress /foo/*.tar.gz example@server1.example.com:~
在此示例中,从远程服务器复制文件:
rsync -av --progress root@nas01:/tmp/*Office* .
示例输出:
receiving file list ... 2 files to consider MacOffice2011wSP2_English.dmg 1036923510 100% 14.72MB/s 0:01:07 (xfer#1, to-check=1/2) Office Mac Home and Student 2011 - 1PC-1User Keys.html 2230 100% 23.67kB/s 0:00:00 (xfer#2, to-check=0/2) sent 64 bytes received 1037052576 bytes 15363742.81 bytes/sec total size is 1036925740 speedup is 1.00
该--info=progress2选项显示基于整个传输的统计信息,而不是单个文件。使用此标志而不输出文件名(例如,如果您想要查看传输的进展情况而又不想滚动屏幕并显示大量名称,请避免使用 -v 或指定 –info=name0)。
rsync -av --info=progress2 root@nas01:/tmp/*Office* .
示例输出:
sending incremental file list MacOffice2011wSP2_English.dmg 1,036,923,510 99% 39.90MB/s 0:00:24 (xfr#1, to-chk=0/2) sent 1,037,176,846 bytes received 35 bytes 40,673,603.18 bytes/sec total size is 1,036,925,740 speedup is 1.00
在此示例中,从本地计算机复制到远程服务器:
$ rsync -v --progress debian-9-openstack-amd64.qcow2 vivek@centos7:~/virt/
使用 pv 命令监控 rsync 命令的进度
pv 命令允许您查看数据通过管道的进度。它提供以下信息:
- 已过时间
- 完成百分比(带进度条)
- 当前吞吐率
- 传输的数据总量
- 预计到达时间
语法是:
rsync options source dest | pv -lpes Number-Of-Files
因此,如果 /tmp/software 中有 42 个文件,并且想要将它们复制到 /nas10,请输入:
rsync -vrltD --stats --human-readable /tmp/software /nas10 | pv -lep -s 42
或者
rsync -vrltD --stats --human-readable /tmp/software /nas10 | pv -lep -s 42 >/dev/null
动图 01:rsync 和 pv 命令演示
结论
您了解了在 Linux、macOS 或类 Unix 系统上使用 rsync 命令复制文件时显示进度条的方法。输入以下命令查看 pv 和 rsync 命令手册页:
man pv
man rsync