关于rsync调用的问题并不缺,但我没有看到任何有用的内容,所以这是我正在努力的命令:
$ rsync -av -e 'ssh -i key.id_dsa -l root' root@server:/dir/file /tmp/file
它适用于bash。我使用String.execute()
方法从Groovy代码调用它,它失败如下:
command exit code: 1
rsync command output:
rsync command error output:
Unexpected remote arg: root@server:/dir/file
rsync error: syntax or usage error (code 1) at main.c(1348) [sender=3.1.0]
显然,-e
开关及其值是问题:rsync -av -r --progress root@server:/dir/file /tmp/file
之类的命令可以完美运行。
问题0:为什么-e
参数特殊?
问题1:如何使其发挥作用?
答案 0 :(得分:1)
我猜测-e
开关是bash shell所需要的东西...所以要调用后面带有bash shell的命令,你需要使用List
表单像execute
那样:
["bash", "-c", "rsync -av -e 'ssh -i key.id_dsa -l root' root@server:/dir/file /tmp/file"].execute()
这应该让它运行(我总是使用这种形式,因为它似乎总是比String.execute()
形式更不容易出错)