什么导致SFTP中的错误“无法规范:没有这样的文件或目录”?

时间:2013-07-04 19:42:05

标签: sftp

我正在尝试使用SFTP将整个目录上传到远程主机但是我收到了错误。(我知道SCP确实有效,但我真的想弄清楚SFTP的问题。)

我使用如下命令: (echo "put -r LargeFile/"; echo quit)|sftp -vb - username@remotehost:TEST/

但我收到错误“无法规范化:没有这样的文件或目录”“无法规范路径”/ home / s1238262 / TEST / LargeFile“

我认为这是由访问权限引起的。因此,我以交互模式打开了与远程主机的SFTP连接,并尝试在TEST /中创建一个新目录“LargeFile”。我成功了。然后,我使用与上面相同的命令上传整个目录“LargeFile”。我也成功了。 LargeFile中的子目录是自动创建或复制的。

所以,我很困惑。似乎只能在非交互模式下创建LargeFile /目录。它或我的命令有什么问题?

5 个答案:

答案 0 :(得分:18)

使用SFTP,您只能复制目录是否存在。所以

> mkdir LargeFile
> put -r path_to_large_file/LargeFile

与@Vidhuran链接中的建议相同,但这可以节省一些阅读。

答案 1 :(得分:5)

由于-r选项,可能会发生此错误。请参阅https://unix.stackexchange.com/questions/7004/uploading-directories-with-sftp

答案 2 :(得分:1)

对我来说,最简单的方法是将文件夹压缩到本地LargeFile.zip,然后只需put LargeFile.zip

zip -r LargeFile.zip LargeFile
sftp www.mywebserver.com (or ip of the webserver)
put LargeFile.zip (it will be on your remote server local directory)
unzip Largefile.zip

答案 3 :(得分:1)

更好的方法是使用scp。

scp -r LargeFile/"; echo quit)|sftp -vb - username@remotehost:TEST/

答案 4 :(得分:1)

如果您使用的是Ubuntu 14.04,则sftp有一个错误。如果你有' /'添加到文件名后,您将获得无法规范化:失败错误。

例如:

  

SFTP> cd my_inbox / ##会给你一个错误

     

SFTP> cd my_inbox ##不会给你错误

注意正确请求中缺少正斜杠的方法。当您使用TAB键自动填充路径中的名称时,会出现正斜杠。