54

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

任何帮助将不胜感激。

4

5 回答 5

225

对于实际上想要直接回答这个问题的人(而不是被告知使用 sftp 以外的东西)......

put -r local/path/to/directoryName

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

mkdir directoryName
于 2014-01-10T20:55:54.773 回答
28

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

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

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

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

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

更新:对于想要put具体使用的用户,请参考 Ben Thielker 的回答。

于 2012-04-10T10:06:28.417 回答
5
sftp> mkdir source
sftp> put -r source
 Uploading source/ to /home/myself/source
 Entering source/
 source/file1
 source/file2

在此处输入图像描述

于 2017-05-26T09:00:04.270 回答
0

如果你在使用 sftp 时遇到问题,你可以使用 ncftp For centos

yum install ncftp

递归复制整个目录

ncftpput -R -v -u username -P 21 ftp.server.dev /remote-path/ /localdirectory
于 2019-10-23T13:54:32.707 回答
-11

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

于 2012-04-10T08:06:36.580 回答