复制文件时Rsync显示进度栏

时间:2020-01-09 10:43:41  来源:igfitidea点击:

我正在使用rsync上传和下载大文件。
有没有办法显示文件进度条?
在Linux或者Unix等操作系统上本地或者远程使用rsync复制文件时,如何显示进度?

rsync是免费的开源工具。
复制本地或者远程文件很有用。
通过仅发送源文件和目标中现有文件之间的差异,它减少了通过网络发送的数据量。
将文件从serverA复制到serverB时,可以使用以下任一选项添加总进度指示器,反之亦然。

  • 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 [email protected]:/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 [email protected]:/data
 
## See the pv command below for more info & syntax ##

例子

要将文件从/foo/*.tar.gz复制到名为server1.theitroad.local的远程服务器,请执行:

rsync -av -P /foo/*.tar.gz [email protected]:~

或者

rsync -av --progress /foo/*.tar.gz [email protected]:~

在此示例中,从远程服务器复制文件:

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 Hyman@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