Rsync本地推送到远程报错:源和目标不能均为远程
解决Rsync本地同步到远程时的"The source and destination cannot both be remote"错误
咱们先拆解下你碰到的问题:能正常从远程拉取文件到本地,但反向同步时却报错说源和目标不能同时是远程——明明你的命令是本地→远程,这说明命令格式肯定哪里出了问题。
先看你执行的命令:
rsync -av /Users/[username]/Documents/workprojects/[project-folder]/web/wp-content/themes/reactify/js/build/ [remote-server]:web/wp-content/themes/reactify/js/build
可能的问题点及解决方法:
远程路径缺少登录用户(未配置默认登录规则时)
Rsync连接远程服务器时,默认会用当前本地用户名登录,但如果远程服务器的用户名和本地不一致,或者你没配置SSH别名的话,必须明确指定远程用户名,正确格式是[远程用户名]@[远程服务器地址]:[远程路径]。比如你的远程用户名是deploy,命令要改成:rsync -av /Users/[username]/Documents/workprojects/[project-folder]/web/wp-content/themes/reactify/js/build/ deploy@[remote-server]:web/wp-content/themes/reactify/js/build/远程路径结尾建议加斜杠
虽然这不是报错的直接原因,但为了避免同步时把整个build文件夹当成文件复制到目标路径里(形成嵌套的build/build结构),建议目标路径也加上结尾的斜杠/,这样Rsync会把源文件夹内的内容同步到目标文件夹中。检查SSH别名配置(如果
[remote-server]是自定义别名)
如果你是用SSH配置文件里的别名指代远程服务器,要确保~/.ssh/config里的配置正确,比如:Host [remote-server] HostName 你的服务器IP或域名 User 你的远程用户名 Port 22 # 非默认22端口时需指定要是配置出错,Rsync可能无法正确识别别名,误判路径为远程路径,触发报错。
小验证技巧
你可以先通过SSH测试能否正常连接远程服务器:
ssh [remote-server]
如果连接失败,说明服务器别名或登录信息有问题,先解决SSH连接问题,再尝试Rsync同步。
内容的提问来源于stack exchange,提问作者T.Koomen
相关产品推荐
相关产品推荐

