将 SFTP 上的文件复制到另一个目录,无需往返

Tom*_*han 3 sftp

我试过这个,但当然它不起作用:

sftp> cp baz.txt foo/bar/
Invalid command.
Run Code Online (Sandbox Code Playgroud)

有没有办法通过sftp连接来做到这一点?


当然,我意识到如果我ssh改为连接,这是微不足道的。但是,我有一个 sftp 服务器,我实际上无法做到这一点,因为ssh-ing 给了我一个不同的起始目录,而且我无法控制(甚至不知道)远程上的绝对路径;当我连接到sftp.

Mar*_*ryl 8

核心 SFTP 协议不支持复制远程文件。

copy-file该协议扩展草案,但只有少数 SFTP 服务器(例如ProFTPD/mod_sftp和 Bitvise SFTP 服务器)和少数 SFTP 客户端(例如WinSCP)支持。

最广泛使用的 OpenSSH SFTP 服务器绝对不支持它。OpenSSH SFTP 客户端 ( sftp) 也没有,即没有cp命令或任何其他功能等效的命令。


替代方案(您似乎知道但不会帮助您):

  • 如果您可以通过 SSH/终端访问服务器,请使用shellcp命令
  • 如果您的 SFTP 服务器支持copy-file扩展,请使用也支持它的 SFTP 客户端。
  • 否则,您唯一的选择是将文件下载到本地临时位置并将其副本上传回不同的/目标远程目录。
    一些 SFTP 客户端甚至可以一次性为您完成此操作(例如,在 WinSCP 中,请参阅复制对话框中的通过本地临时复制选项复制)。

(我是 WinSCP 的作者)