1

我遇到了将文件从一个 SFTP 文件夹复制(复制)到同一服务器上的另一个文件夹的问题。

所以,问题:有没有一种有效的方法可以远程进行(即不将数据复制到客户端,反之亦然)?

我将 Java 与JSch 库一起使用。

4

2 回答 2

2

SFTP 协议本身只支持客户端和服务器之间的数据传输,不支持服务器本身。

不过,您可以使用底层 SSH 协议的其他部分(以及 JSch 的实现)在服务器上执行命令。在这种情况下,正如 Joop 所提到的,使用Exec 通道是正确的选择。您可以将用于ChannelSftp的相同会话用于任意数量的其他通道,例如用于您的 exec 通道。只需确保在使用后关闭所有频道。(查看 JSch wiki 上的Shell、Exec 或 Subsystem Channel页面了解更多信息。

如果服务器不支持命令执行,这当然不会起作用,例如,如果它被配置为只支持 SFTP。那么您唯一的解决方案是下载并重新上传此文件。

于 2012-05-28T20:45:46.493 回答
1

在 SFTP 中,一个可能执行! ...的是执行本地命令。

! cp a.txt a-backup.txt

由于 JSch 也可以提供 SSH 连接,即使是感叹号也没有实际意义。对于代码,您可能会在示例中找到一些起点。Exec 示例应该可以。

于 2012-05-28T09:47:26.050 回答