shell – 与rsync并行的GNU

我正在尝试使用带有GNU parallel的ssh并行运行一些rsync实例.我正在运行的命令是这样的:
find /tmp/tempfolder -type f -name 'chunck.*' | sort | parallel --gnu -j 4 -v ssh -i access.pem user@server echo {}\; rsync -Havessh -auz -0 --files-from={} ./ user@server:/destination/path

/ tmp / tempfolder包含带有前缀chunck的文件,它们包含实际的文件列表.

使用此命令,我得到了4个rsync调用,但是它们需要一段时间才能开始运行,并且不能一起启动并且不能并行运行.

我究竟做错了什么?

你确定rsyncs真的没有并行运行吗?
检查ps |命令运行时grep rsync将显示实际同时运行的rsyncs和rsncs的数量.

默认情况下,parallel保持每个作业的打印输出,直到它完成,以便不同命令的输出不会全部混合在一起:

--group  Group output. Output from each jobs is grouped together and is only printed when the command
         is finished. stderr (standard error) first followed by stdout (standard output). This takes
         some cpu time. In rare situations GNU parallel takes up lots of cpu time and if it is
         acceptable that the outputs from different commands are mixed together,then disabling
         grouping with -u can speedup GNU parallel by a factor of 10.

         --group is the default. Can be reversed with -u.

我的猜测是rsyncs实际上并行运行,但从输出中感觉就像是在运行串行. -u选项改变了这一点.

例如,使用此cmd:

$for i in 1 2 3 ; do echo a$i ; sleep 1 ; done
a1
a2
a3

默认情况下,我们没有反馈,直到完成所有操作:

$(echo a ; echo b ; echo c ) | parallel 'for i in 1 2 3 ; do echo {}$i ; sleep 1 ; done  ' 
a1
a2
a3
b1
b2
b3
c1
c2
c3

然后立即打印-u东西:

$(echo a ; echo b ; echo c ) | parallel -u 'for i in 1 2 3 ; do echo {}$i ; sleep 1 ; done  ' 
a1
b1
c1
a2
b2
c2
a3
b3
c3

在这两种情况下,它需要3秒才能运行,所以它真的同时运行……

相关文章

普通模式 >G 增加当前行到文档末尾处的缩紧层级 $ 移动到本行的末尾 . 相当于一个...
原文连接: https://spacevim.org/cn/layers/lang/elixir/ 模块简介 功能特性 启用模块 快捷键 语言专属...
原文连接: https://spacevim.org/cn/layers/lang/dart/ 模块简介 功能特性 依赖安装及启用模块 启用模...
 =   赋值操作符,可以用于算术和字符串赋值 +        加法计算     -        减法运算...
1.根据包名来查看指定的APP指定数据 adb shell "top | grep com.xxx.xxx" 由于这样打印出来的数...
ctrl+F 向下翻页 ctrl+B 向下翻页 u 取消最近一次操作 U 取消当前行的操作 ZZ 保存当前内容并退出 gg 跳...