scp 要求目标服务器上存在同名目录

scp 要求目标服务器上存在同名目录

我正在使用scp将目录上传到远程服务器。但是,如果远程服务器没有同名的“目标”目录,我会收到“没有此类文件”错误。请注意,这不是目标目录不存在的问题(在以下示例中,目标是远程服务器的主目录)。它只是不与发送的目录共享名称。

目录上传失败示例:

$ mkdir test_local 
$ touch test_local/test_local.txt 
$ scp -r ./test_local [email protected]:
> scp: realpath ./test_local: No such file
> scp: upload "./test_local": path canonicalization failed
> scp: failed to upload directory ./test_local to .

但是,如果我在远程计算机上创建一个具有相同名称的空目标目录([电子邮件受保护]:~/test_local),该命令确实有效,并成功使用本地目录的内容更新了目标目录。

据我了解,scp不应要求存在同名的空“目标”目录,那么为什么会出现这种情况呢?

我使用的是 MacOS 13.0.1,远程主机使用的是 Rocky Linux 8.6 (Green Obsidian)。

答案1

最新版本scp(从 ssh 9.0.0 开始)使用SFTP协议进行复制。因为sftp这个问题非常已知的。解决方案是使用-Oflag for scp,即scp -O -r

我找到了这个解决方案这里

相关内容