如何使用JSch在SFTP服务器上复制文件?

时间:2012-05-28 09:11:40

标签: java ssh sftp jsch

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

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

我正在使用带有JSch library的Java。

2 个答案:

答案 0 :(得分:2)

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

但是,您可以使用底层SSH协议的其他部分(以及JSch的实现)在服务器上执行命令。在这种情况下,如Joop所述,Exec channel是正确的选择。您可以将Session用于ChannelSftp的同一Shell, Exec or Subsystem Channel用于任意数量的其他渠道,例如为你的高管频道。请确保在使用后关闭所有通道。 (有关更多信息,请查看JSch wiki上的{{3}}页面。

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

答案 1 :(得分:1)

在SFTP中,可以执行! ...执行本地命令。

! cp a.txt a-backup.txt

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