SCP不识别目标文件路径 复制本地.env目录到远程服务器报错处理
报错原因及解决方案
核心报错原因
你执行报错的命令中,目标路径root@<MY_IP_INSTANCE>:/finance使用了以/开头的绝对路径,scp会尝试将本地.env目录写入服务器根目录下的finance目录,但你实际要存放文件的目标路径是root用户家目录下的/root/finance,服务器根目录下并没有名为finance的目录,因此scp无法完成写入,抛出Not a directory错误。
路径规则说明
scp的远程目标路径遵循以下解析规则:
- 以
/开头的路径会被解析为服务器的绝对路径,从系统根目录开始计算 - 不以
/开头的路径会被解析为登录用户(本次操作登录用户为root)的家目录相对路径,比如root@<IP>:finance就等价于root@<IP>:/root/finance
你之前了解的「复制整个文件夹时源路径末尾不需要加/」的规则是正确的,但本次问题和源路径无关,是目标路径的解析规则匹配错误导致的。
成功命令逻辑说明
你最终执行的命令scp -r .env root@173.255.210.31:finance,目标路径为相对路径,刚好匹配你要存放的/root/finance路径,因此scp会自动将本地.env目录整体复制到服务器/root/finance路径下,完整保留目录结构,所以执行成功。
内容的提问来源于stack exchange,提问作者sat1017
相关产品推荐
相关产品推荐

