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

Chr*_*ris 47 linux console recursion upload sftp

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

任何帮助将不胜感激.

Ben*_*ker 202

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

put -r local/path/to/directoryName
Run Code Online (Sandbox Code Playgroud)

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

mkdir directoryName
Run Code Online (Sandbox Code Playgroud)

  • 对于像我这样不幸使用最新版本的OpenSSH的那些穷人用户应该有一个注释 - 在5.4中添加了递归get和put,CentOS或类似的那些可能正在运行早期版本,除非他们已经更新了它手动. (5认同)
  • 谢谢 - 有人认为这是接受的答案. (4认同)
  • 当我尝试把-r somefile我得到"无效的标志-r" (3认同)

Eug*_*e S 27

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

$ scp -r foo your_username@remotehost.edu:/some/remote/directory/bar
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

  • 当目标仅支持SFTP而不支持SSH时,这将不起作用. (4认同)

Gir*_*ore 5

sftp> mkdir source
sftp> put -r source
 Uploading source/ to /home/myself/source
 Entering source/
 source/file1
 source/file2
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明