使用Java将文件从一个FTP服务器复制到另一个FTP服务器

时间:2018-01-29 19:46:06

标签: java ftp sftp

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

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

正在提供java.nio.file.NoSuchFileException

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

2 个答案:

答案 0 :(得分:1)

FTP

通常,如果FTP协议是您可以访问计算机的唯一方式,则无法直接将文件从一个远程FTP服务器传输到另一个远程FTP服务器。

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

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

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

(但是你们两个显然需要两个FTPClient

的实例

如果您有其他服务器的其他访问权限,例如SSH,您当然可以自动登录服务器,然后在其上运行FTP以上传/下载到其他服务器。

SFTP

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

SFTP根本不支持服务器之间的传输。见

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

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

或者,如果您具有对其中一个服务器的shell访问权限,则可以编程执行某些SFTP客户端以将文件上载/下载到其他服务器或从其他服务器下载文件。但这是一个完全不同的问题。

答案 1 :(得分:1)

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

正在使用以下代码:

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