首页 > 解决方案 > 从 Windows cmd 在 bash 中调用 rsync

问题描述

我正在尝试rsync从批处理文件运行。命令是

SET CMD="rsync -P -rptz --delete -e 'ssh -i /root/.ssh/CERTIFICATE.pem' SOURCE_ADDRESS  /mnt/c/Users/MYNAME/IdeaProjects/PROJECT/SUBFOLDER/SUBFOLDER/SUBFOLDER/SUBFOLDER/LASTFOLDER"

bash %CMD%

如果我在输入 后运行命令,这很好用bash,但是当我从 cmd 运行命令时,bash它会显示没有这样的文件或目录。

此外,当玩弄并尝试调试 bash 时,最终会挂起......即,如果我打开 bash,我没有得到任何提示,只是一个闪烁的光标。

任何帮助表示赞赏。

标签: bashubuntubatch-filersync

解决方案


要使用 bash 运行命令,您需要使用该-c选项

bash -c "%CMD%"

没有它,第一个非选项参数将被视为 *.sh shell 脚本,这rsync不是并且会导致错误

如果在选项处理之后参数仍然存在,并且既没有提供 the-c也没有-s提供选项,则假定第一个参数是包含 shell 命令的文件的名称。

请注意,Windows 中的 cmd 不是 DOS,即使它们有一些类似的命令。其余的差别很大


推荐阅读