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

时间:2016-06-06 18:38:51

标签: java spring copy sftp jsch

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

到目前为止,在没有中间人的情况下,我还没有找到任何办法。

另一种方法是打开一个SSH频道,只使用cp命令,但在我看来这不太好看。

提前致谢!

1 个答案:

答案 0 :(得分:1)

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

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

最广泛的OpenSSH SFTP服务器肯定不支持它。

JSch库也不支持它。

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

的回答

所以实际上在“exec”通道(ChannelExec)上实际使用cp shell命令是最好的方法(假设你连接到* nix服务器并且你有shell访问权限)。

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