2015-11-03 24 views
1

我使用Apache FTPClient。我是在cp -p之类的文件夹中做文件的副本,但是来自Java。我如何使用'sendCommand'方法做到这一点,还是可以用其他方式? rename方法移动文件但不保留备份副本。在Java中通过FTP协议复制远程文件(使用sendCommand将cp -p发送到Linux)

+0

可能的重复[标准简洁的方式来复制文件在Java?](http://stackoverflow.com/questions/106770/standard-concise-way-to-copy-a-file-in-java) –

回答

2

没有通过FTP协议复制远程文件的标准方法。一些FTP服务器支持专有或非标准扩展。


因此,如果你很幸运,你的服务器的ProFTPD与mod_copy module,您可以使用FTP.sendCommand发出这两个命令:

CPFR sourcepath 
CPTO targetpath 

第二种可能性是,你的服务器允许您执行任意的shell命令。这也不常见。如果您的服务器支持这一点,你可以用SITE EXEC命令:

SITE EXEC cp -p sourcepath targetpath 

另一个解决办法是打开到FTP服务器的第二连接,使服务器上的文件上传到自己通过管道连接到被动模式数据连接一个活动模式数据连接。这个解决方案在PHP中的实现显示在FTP copy a file to another place in same FTP


如果没有这个工程,你所能做的就是将文件下载到本地临时位置并重新上传回的目标位置。请参阅FTP copy a file to another place in same FTP

相关问题