我尝试了put -r directory/*
,只上传了文件,而不是文件夹。给我错误,不能Couldn't canonicalise
。
非常感谢任何帮助。
答案 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
答案 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,可以轻松处理递归。