将文件从一个 FTP 服务器复制到 Java 中的另一个 FTP 服务器

Copy files from one FTP server to another FTP server in Java

我想将文件从一个 FTP 服务器复制到另一个 FTP 服务器(两个不同的主机)。

Files.copy(
    new File(channelSftp.realpath(fileName)).toPath(),
    new File(channelSftp2.realpath(fileName)).toPath());

正在给java.nio.file.NoSuchFileException

有人可以帮我解决这个问题吗?

FTP

一般来说,如果 FTP 协议是您访问机器的唯一方式,您不能直接将文件从一个远程 FTP 服务器传输到另一个远程 FTP 服务器。

FXP protocol 允许这样做,但大多数 FTP 服务器通常不允许这样做,因为它们通常配置为不接受来自与客户端 IP 地址不同的 IP 地址的数据连接。


唯一可靠的解决方案是将文件下载到本地计算机并将其上传到其他 FTP 服务器。

您基本上可以使用这些答案中所示的相同解决方案将文件从一个目录复制到同一 FTP 服务器上的另一个目录:

  • How to copy a file on the ftp server to a directory on the same server in java?

(但显然你需要两个 FTPClient


如果你有另一个访问其中一个服务器的权限,比如SSH,你当然可以自动登录到服务器然后运行 FTP到upload/download to/from 其他服务器。


SFTP

尽管你的措辞不同,但你的问题似乎实际上是关于 SFTP,而不是 FTP。这是两个完全不同的协议。

SFTP 完全不支持跨服务器传输。参见

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

同样,您通常最终会将文件下载到本地计算机并上传到其他服务器。

再次,使用与此处所示相同的代码将文件从一个 SFTP 目录复制到另一个目录,只需使用两个不同的主机:

或者,如果您可以 shell 访问其中一个服务器,您可以通过编程方式执行一些 SFTP 客户端到 upload/download 一个文件 to/from 另一个服务器.但这是一个完全不同的问题。

我找到了解决方案,感谢您的帮助。

它正在使用以下代码:

sftp2.put(sftp.get(文件名),文件名);