19

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

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

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

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

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

4

5 回答 5

22

使用 SFTP,您只能在目录存在的情况下进行复制。所以

> mkdir LargeFile
> put -r path_to_large_file/LargeFile

与@Vidhuran 链接中的建议相同,但这应该可以为您节省一些阅读时间。

于 2014-07-21T15:36:36.213 回答
5

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

于 2013-08-21T13:33:40.803 回答
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
于 2014-03-02T21:57:01.270 回答
1

更好的方法是使用 scp。

scp -r LargeFile/"; echo quit)|sftp -vb - username@remotehost:TEST/
于 2014-07-13T18:24:48.690 回答
0

如果您使用的是 Ubuntu 14.04,则 sftp 有一个错误。如果您在文件名中添加了“/”,您将收到无法规范化:失败错误。

例如:

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

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

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

于 2016-04-07T17:20:57.863 回答