使用 Spring integration/JCraft JSch 在 SFTP 服务器内部复制文件

Copying files internally on an SFTP server using Spring integration/JCraft JSch

我想知道是否有办法将 SFTP 服务器上的文件复制到同一 SFTP 服务器上的另一个目录。我想在不在客户端中获取文件然后将其设置在其他文件夹中的情况下执行此操作。当然这会工作得很好,但我想这会产生更多的开销,所以我想尽可能避免这种情况。我目前正在使用基于 JCraft JSch 的 Spring 集成。

到目前为止,我还没有找到任何没有中介的方法。

另一种方法是打开 SSH 通道并仅使用 cp 命令,但我认为这也不太好。

提前致谢!

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

这里有一个 copy-file extension to the protocol, but that's supported by only few SFTP servers (ProFTPD mod_sftp 和 Bitvise SFTP 服务器的草稿。

在最广泛的 OpenSSH SFTP 服务器中,只有最新的 version 9.0.

才支持它

而且 JSch 库也不支持它。


另请参阅我对 How can I copy/duplicate a file to another directory using SFTP?

的回答

因此,不幸的是,通过“执行”通道 (ChannelExec) 使用 cp shell 命令是最好的方法(假设您连接到 *nix 服务器并且您有 shell 访问权限。


如果您没有 shell 访问权限,那么您唯一的选择确实是将文件下载到本地临时文件夹并将其上传回新位置(或使用流,以避免临时文件)。另请参阅: