rsync 远程路径被读取为本地路径

Rsync remote path is read as a local path

我想上传一个文件夹到我的 VPS。但是当我 运行:

rsync -a --exclude=/node_modules ~/MyCoolProject/ root@X.X.X.X/:var/MyCoolProject

X.X.X.X 是我 VPS 的 IP 地址。我收到以下错误:

rsync: mkdir "/Users/remi/root@X.X.X.X/:var/MyCoolProject" failed: No such file or directory (2)

所以它在我的本地机器上寻找 root@X.X.X.X 路径,而不是通过 SSH 连接到远程。

我做错了什么?

rsync -a ... root@X.X.X.X/:var/MyCoolProject
                         ^--remove

去掉"X.X.X.X"后面的斜线。它导致 rsync 将参数解释为本地目录而不是远程目录。

更长的解释:Rsync 允许您使用以下形式的变体指定远程位置:

user@host:/remote/directory

其中 host 是主机名或 IP 地址。在您的例子中,远程位置的 "host" 部分是 "X.X.X.X/"。有效的主机名或 IP 地址不能包含“/”,因此 rsync 不接受该参数作为远程位置。相反,它退回到将参数解释为本地目录名称。