正确的:我最初错误地声称OpenSSH不支持put -r
。它确实可以,但是它以一种非常奇怪的方式来实现。似乎期望目标目录已经存在,并且名称与源目录相同。
sftp> put -r source
Uploading source/ to /home/myself/source
Couldn't canonicalize: No such file or directory
etc.
sftp> mkdir source
sftp> put -r source
Uploading source/ to /home/myself/source
Entering source/
source/file1
source/file2
尤其奇怪的是,即使您为目的地指定了不同的名称,这也同样适用:
sftp> put -r source dest
Uploading source/ to /home/myself/dest
Couldn't canonicalize: ...
sftp> mkdir dest
sftp> put -r source dest
Uploading source/ to /home/myself/dest/source
Couldn't canonicalize: ...
sftp> mkdir dest/source
sftp> put -r source dest
Uploading source/ to /home/myself/dest/source
Entering source/
source/file1
source/file2
为了更好地实现递归put
,可以改用PuTTY psftp
命令行工具。它putty-tools
在Debian(很可能是Ubuntu)下的软件包中。
或者,如果您要使用GUI,Filezilla将执行您想要的操作。
sftp
允许put -r
使用OpenSSH 5.4