当我运行命令时:
rsync -avzhu --progress --exclude node_modules -e 'ssh -p 2022' /cygdrive/d/stuff_to_backup user@domain.com:/home2/user/backup
它在命令行中运行良好,但是当从 shell 脚本中执行完全相同的命令时,它会抛出此错误:
The source and destination cannot both be remote.
rsync error: syntax or usage error (code 1) at main.c(1261) [Receiver=3.1.1]
知道为什么会发生这种情况吗?
最佳答案
花了大半个晚上试图解决这个问题,希望有一天这对其他人有所帮助。
我在解决这个问题时经常遇到的另一个错误是:
Unexpected remote arg: C:/Program Files (x86)/Git/cygdrive/c/Users
因为我注意到它只从 shell 脚本而不是命令行抛出错误,所以我能够确定它在没有 cygwin (cmd.exe) 的 Windows 上工作正常,它只是从它所在的 bash 运行有问题。
我遇到的大多数问题似乎都与引用相关,而且我对源的路径发生了一些奇怪的事情。我尝试使用像“/cygdrive/d/backup_dir”这样的路径,但它以某种方式被转换或解释为“C:/Program Files (x86)/Git/cygdrive/d/backup_dir”,这导致了错误。在我切换到没有“cygdrive”的相对路径后,这不是问题。我使用 cmder,所以可能是它造成的?
无论如何,最终的修复是省略“cygdrive”部分并使用相对路径。另外,不要对引号 '"' 过度热心。
关于windows - Cygwin 命令可从命令行运行,但不能从脚本运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32836331/