如何使用Java将存储在远程SFTP服务器中的文件复制到同一远程服务器中的另一个文件夹?

时间:2017-07-10 04:54:22

标签: java sftp jsch

我一直在尝试使用以下方法将远程服务器中的几个选定文件(执行少量检查后)复制到同一远程服务器:

File localFile = new File(srcPath);
sftpChannel.put(localFile.getAbsolutePath(),localFile.getName());

我甚至尝试使用get()方法将所选文件复制到本地计算机。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

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

copy-file extension to the protocol的草案,但仅有少数SFTP服务器(例如ProFTPD/mod_sftp和Bitvise SFTP服务器)支持。

JSch库也不支持copy-file扩展名。

备选方案:

  • 如果您有shell访问权限,请打开" exec" channel,并使用shell cp命令(或服务器操作系统的等效命令) 见Exec.java example
  • 否则,您唯一的选择是将文件下载到本地临时位置,并将其副本上载回另一个/目标远程目录。或use streams,以避免临时文件。

另见How can I copy/duplicate a file to another directory using SFTP?