首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GNU并行和rsync与密码?

使用GNU并行和rsync与密码?
EN

Stack Overflow用户
提问于 2016-05-10 02:41:58
回答 1查看 669关注 0票数 1

我见过与rsync并行的GNU,不幸的是,我看不到用例的明确答案。

作为我的脚本的一部分,我有以下内容:

代码语言:javascript
复制
echo "file01.zip
file02.zip
file03.zip
" | ./gnu-parallel --line-buffer --will-cite \
-j 2 -t --verbose --progress --interactive \
 rsync -aPz {} user@example.com:/home/user/

因此,我运行这个脚本,作为其输出的一部分,一旦到了gnu-parallel步骤,我就得到了这个结果(因为我有--interactive,所以会提示我确认每个文件:

代码语言:javascript
复制
rsync -aPz file01.zip user@example.com:/home/user/ ?...y
rsync -aPz file02.zip user@example.com:/home/user/ ?...y

Computers / CPU cores / Max jobs to run
1:local / 4 / 2

Computer:jobs running/jobs completed/%of started jobs/Average seconds to complete
local:2/0/100%/0.0s

..。然后,这个过程就挂在这里,什么也不做,数字也不会改变什么的。

在这一点上,我可以从另一个终端做这个:

代码语言:javascript
复制
$ ps axf | grep rsync
12754 pts/1    S+     0:00  |       |   \_ perl ./gnu-parallel --line-buffer --will-cite -j 2 -t --verbose --progress --interactive rsync -aPz {} user@example.com:/home/user/
12763 pts/1    T      0:00  |       |       \_ rsync -aPz file01.zip user@example.com:/home/user/
12764 pts/1    R      0:11  |       |       |   \_ ssh -l user example.com rsync --server -logDtprze.iLs --log-format=X --partial . /home/user/
12766 pts/1    T      0:00  |       |       \_ rsync -aPz file02.zip user@example.com:/home/user/
12769 pts/1    R      0:10  |       |           \_ ssh -l user example.com rsync --server -logDtprze.iLs --log-format=X --partial . /home/user/

..。因此,我确实可以证实,过程已经启动,但他们显然没有做任何事情。至于确认他们没有做任何事情(而不是上传,在本例中应该这样做),我运行了监视器sudo iptraf,它报告了wlan0上所有流量的0 Kb/s,这是我这里仅有的一个。

问题是-我登录到的服务器,只接受带有密码的SSH身份验证。起初,我认为--interactive允许我以交互方式输入密码,但它反而提示关于是否运行每个命令行并从终端读取一行的用户。只有当响应以'Y‘或'y’开头时才运行命令行。。所以,好的,上面我回答了y,但它之后没有提示我输入密码,而且进程似乎在等待它。我的版本是"GNU并行20160422“。

代码语言:javascript
复制
$ ./gnu-parallel --version | head -1
GNU parallel 20160422

那么,如何使用GNU并行运行多个具有密码的rsync任务呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-10 05:35:58

使用sshpass

代码语言:javascript
复制
doit()  {
  rsync -aPz -e "sshpass -p MyP4$$w0rd ssh" "$1" user@example.com:/home/user
}
export -f doit
parallel --line-buffer -j 2 --progress doit ::: *.zip

并行运行交互程序的基本问题是:如果两个程序准备好输入,哪个程序应该得到输入?因此,GNU的--tty意味着-j1

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37128425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档