来自 Groovy 的 rsync:"-e" arg 导致"unknown remote arg"错误



乏关于 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:如何使其工作?

我猜-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()形式更不容易出错)

相关内容

  • 没有找到相关文章

最新更新