如何在linux上使用sftp上传包含其他文件夹的整个文件夹?

时间:2012-04-10 07:40:46

标签: linux recursion upload console sftp

我尝试了put -r directory/*,只上传了文件,而不是文件夹。给我错误,不能Couldn't canonicalise

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:191)

对于真正希望直接回答这个问题的人(而不是被告知使用sftp以外的东西)......

put -r local/path/to/directoryName

上传的目录必须已经存在于服务器的工作目录中,因此您可能需要先创建它。

mkdir directoryName

答案 1 :(得分:24)

Here您可以找到有关如何使用scp复制目录的详细说明。在你的情况下,它会是这样的:

$ scp -r foo your_username@remotehost.edu:/some/remote/directory/bar

这会将目录“foo”从本地主机复制到远程主机的目录“bar”。 这里-r是 - 复制整个目录。

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

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

更新:对于想要专门使用put的用户,请参阅Ben Thielker的回答。

答案 2 :(得分:2)

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

enter image description here

答案 3 :(得分:1)

如果在使用sftp时遇到问题,则可以使用ncftp 对于centos

yum install ncftp

以递归方式复制整个目录

ncftpput -R -v -u username -P 21 ftp.server.dev /remote-path/ /localdirectory

答案 4 :(得分:-10)

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