2012-04-10 46 views
37

我试过put -r directory/*,它只上传文件而不是文件夹。给我的错误,不能Couldn't canonicalise如何在linux上使用sftp上传包含其他文件夹的整个文件夹?

任何帮助将不胜感激。

+3

尝试 “把目录” 没有斜杠和星号。 – 2012-04-10 07:58:37

+0

https://stackoverflow.com/questions/10084941/how-can-i-upload-an-entire-folder-that-c​​ontains-other-folders-using-sftp-on-li/44197588#44197588 – 2017-05-28 08:08:15

回答

25

Here你可以找到详细的解释如何使用scp复制一个目录。对你来说,这将是这样的:

$ scp -r foo [email protected]:/some/remote/directory/bar 

这会从本地主机复制目录“富”到远程主机目录“栏”。 这里-r是 - 递归地复制整个目录。

您也可以使用rcp以相似的语法。它们之间的唯一区别是scp使用安全外壳,而rcp使用远程外壳。

BTW当您提到sftp服务器无法访问命令中提到的文件/目录时,您提到的“无法canonicalise”错误。

UPDATE:对于想要使用put的用户,请参考Ben Thielker的答案。

+0

当目标仅支持SFTP而不支持SSH时,这不起作用。 – Teekin 2017-12-26 15:17:30

-6

改为使用scp。它也使用SSH,可以轻松处理递归。

+3

'scp'确实优越,但并非所有的'sftp'服务器都支持'scp'连接,所以'sftp'本身有时是必需的。 – 2016-03-04 16:56:04

+0

目前我处于一个支持sftp但不支持scp的C++代码库,所以这对我也不起作用。 scp并不总是答案。 – PThomasCS 2017-07-03 02:38:06

151

对于人们真正想要直接回答这个问题(而不是被告知使用比SFTP其他东西)......

put -r local/path/to/directoryName 

上传的目录必须在工作目录已经存在于服务器上,所以你可能需要先创建它。

mkdir directoryName 
+32

这应该是被接受的答案。 – 2014-04-18 19:37:03

+3

当我尝试把-r somefile我得到“无效标志-r” – 2014-08-22 03:40:19

+3

谢谢 - 有人让这个接受的答案。 – Nightwolf 2014-11-07 16:30:08

0
sftp> mkdir source 
sftp> put -r source 
Uploading source/ to /home/myself/source 
Entering source/ 
source/file1 
source/file2 

enter image description here

相关问题