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

标签 java sftp jsch

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

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/

相关文章:

java - 如何模拟 SFTP 连接的连接

python - 在不使用 top 命令的情况下以百分比显示 CPU 核心使用率

ftp - 如何使用 Apache Common vfs 列出文件目录/文件

c# - 无法使用 rebex sftp 保存动态创建的 MemoryStream

python - python 中的 SFTP 方法获取文件的基本名称和完整路径

linux - 在 sftp 命令中列出文件并以毫秒显示其时间戳的命令

java - 在 iFrame 内定位元素时遇到问题

java - JUnit 比较字符串

java - 使用蒙特卡罗方法查找域 2 ≤ x ≤ 4 中 y = x^4 下方的面积

java - 自定义字符串长度比较器 : what's my mistake?