使用SFTP在同一远程服务器中创建该文件夹的副本

时间:2015-02-12 07:11:22

标签: scala sftp jsch

我正在使用JSch API通过SFTP连接到远程服务器。我需要将远程服务器中存在的文件夹的副本复制到同一服务器中。是否有任何方法可以在JSch中执行此类操作?或者善意地给我一个建议去做上述用例。 (我在斯卡拉工作)。

2 个答案:

答案 0 :(得分:2)

在广泛的SFTP协议实现(特别是JSch和OpenSSH)中,不支持远程复制文件。

SFTP的copy-file扩展名,但很少有服务器/客户端支持它 请参阅draft-ietf-secsh-filexfer-extensions-00

备选方案:

  • 下载文件夹并将其重新上传到新位置(纯SFTP解决方案)
  • 在" exec"中使用cp命令通道(不再是SFTP,需要shell访问)

答案 1 :(得分:2)

我们不能使用“sftp”频道来完成这项任务而我们必须使用“exec”频道来完成这项任务。使用“exec”通道,我们可以按如下方式执行Linux命令,

val command = "mkdir testDir"
val channelExec: ChannelExec = session.openChannel("exec").asInstanceOf[ChannelExec]
channelExec.setCommand(command);
channelExec.connect

通过以下链接获取更多详细信息

  

http://www.programcreek.com/java-api-examples/index.php?api=com.jcraft.jsch.ChannelExec

     

http://www.journaldev.com/246/java-program-to-run-shell-commands-on-ssh-enabled-system

     

http://www.jcraft.com/jsch/examples/Exec.java.html

感谢所有参与者