我有一个java应用程序,它将一堆giga文件从一个ftp服务器复制或移动到另一个。目前,它使用ftp get将文件从第一个fpt服务器复制到本地计算机(运行它),然后使用ftp put将其复制到第二个ftp服务器。我使用apache的网络库。
是否可以绕过本地计算机将其直接从一台ftp服务器复制到另一台服务器?一个想法是创建一个java telnet会话,并发送几个ftp命令。它会起作用吗?还有其他建议吗?
答案 0 :(得分:4)
这肯定有用。但是,如果可以使用rcp(1)或scp(1),则不需要中间副本或telnet会话。只需使用
$ scp user@sys1:file user@sys2:file
如果您确实使用远程会话,请考虑使用ssh(1)而不是telnet。
答案 1 :(得分:4)
是的,理论上这可能是由于FTP工作的有趣方式。在实践中,可能需要在中间使用自定义FTP“客户端”,使用两台服务器。
在FTP RFC (959).的第5.2节中示意性地描述和说明了服务器到服务器的传输场景。简而言之,一个服务器被发送一个PASV命令,该命令将IP地址和端口号返回到中间 - 人。中间人在PORT命令中将其发送到另一台服务器,该服务器直接与第一台服务器建立数据连接。
答案 2 :(得分:2)
服务器到服务器的FTP传输也称为“FXP”。尝试在谷歌搜索“fxp java”。
例如:this page可能很有用。
答案 3 :(得分:1)
Telnet / SSH应该可以工作。找一个可用的java telnet客户端库并从那里获取它......
Here's an article用Java编写telnet会话脚本。
答案 4 :(得分:0)
我知道一个PHP脚本。您可以使用它将文件从服务器移动到服务器而无需SSH访问。 它非常快,可以移动多个文件:http://dlvn.net/web-development/move-files-from-server-to-server/