Answers:
这个怎么样?
rsync_param="-av"
rsync "$rsync_param" a/ b |\
pv -lep -s $(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
$rsync_param
避免参数的双重输入
$(rsync "$rsync_param"n a/ b | awk 'NF' | wc -l)
确定要完成的步骤数。
a/ b
a/
是来源b
是目标"$rsync_param"n
很奇怪 引号表示它只能在没有空格的选项上运行,而将附加n
到末尾意味着只能使用简短选项。简单地说$rsync_param -n
,它更清晰,更容易,它指定了空运行而不依赖于的格式rsync_param
,并且通过不引用它,也可以包括长选项
rsync有一个--info
选项,不仅可以用于输出当前进度,还可以用于输出传输速率和经过时间:
--info=FLAGS fine-grained informational verbosity
有关如何使用它的说明-P
位于手册页中的选项下:
-P The -P option is equivalent to --partial --progress. Its purpose is to
make it much easier to specify these two options for a long transfer that
may be interrupted.
There is also a --info=progress2 option that outputs statistics based on
the whole transfer, rather than individual files. Use this flag
without out‐putting a filename (e.g. avoid -v or specify --info=name0)
if you want to see how the transfer is doing without scrolling the screen
with a lot of names. (You don’t need to specify the --progress
option in order to use --info=progress2.)
因此,以下内容:
rsync -r --info=progress2 --info=name0 "$src" "$dst"
结果输出以下内容并不断更新:
18,757,542,664 100% 65.70MB/s 0:04:32 (xfr#1389, to-chk=0/1510)
请注意,当传输开始时,块的总数(因此当前进度)在使用递归选项时可能会发生变化,因为发现了更多文件进行同步
是的,按照乔恩所说的去做:使用--info=progress2
选项。但是,如果我的rsync版本太旧并且不支持此选项,该怎么办?答:升级rsync!
rsync
在Ubuntu上从源代码构建的方法(在Ubuntu 16.04上测试)
cd
进入包含rsync
源代码的此提取目录即可。检查当前版本rsync
。记下这一点,以便以后可以看到它实际上已更新。
rsync --version
安装必要的工具:
sudo apt update
sudo apt install yodl
建立:
./configure
make
sudo make install
确保已更新:
rsync --version
样本输出:
$ rsync --version rsync version 3.1.3 protocol version 31 Copyright (C) 1996-2018 by Andrew Tridgell, Wayne Davison, and others. Web site: http://rsync.samba.org/ Capabilities: 64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints, socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace, append, no ACLs, xattrs, iconv, symtimes, prealloc rsync comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions. See the GNU General Public Licence for details.
在手册页中搜索“ progress2”。您现在可以访问以下--info=progress2
选项:
man rsync
...然后/
按键并输入progress2
;按Enter进行搜索;按n
“下一个”匹配项,直到找到要查找的条目:
还有一个
--info=progress2
选项可基于整个传输而不是单个文件输出统计信息。如果要在不滚动具有很多名称的屏幕的情况下查看传输的情况,请使用此标志而不输出文件名(例如,避免-v
或指定--info=name0
)。(您无需指定--progress
选项即可使用--info=progress2
。)