我一直在尝试使用以下方法将远程服务器中的一些选定文件(在执行一些检查后)复制到同一远程服务器:
File localFile = new File(srcPath);
sftpChannel.put(localFile.getAbsolutePath(),localFile.getName());
我什至尝试使用 get()
方法将这些选定的文件复制到我的本地计算机。
有人可以帮忙吗?
最佳答案
核心SFTP协议(protocol)不支持复制远程文件。
有 copy-file
/copy-data
extensions to the protocol 的草稿。但只有少数 SFTP 服务器支持这些。在最广泛使用的 OpenSSH SFTP 服务器中,只有最新的 version 9.0 支持它。其他服务器例如 ProFTPD mod_sftp
和 Bitvise SFTP 服务器。
JSch 库不支持扩展。
替代方案:
- 如果您有 shell 访问权限,请打开“exec” channel ,然后使用 shell
cp
命令(或适用于您的服务器操作系统的等效命令)。
请参阅Exec.java
example。 - 否则,您唯一的选择是将文件下载到本地临时位置,然后将其副本上传回其他/目标远程目录。或 use streams ,以避免临时文件。
另请参阅 How can I copy/duplicate a file to another directory using SFTP?
关于java - 如何使用 Java 将远程 SFTP 服务器中存储的文件复制到同一远程服务器中的另一个文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45004008/