在Java中通过FTP协议复制远程文件(使用sendCommand将cp-p复制到Linux)

在Java中通过FTP协议复制远程文件(使用sendCommand将cp-p复制到Linux),java,ftp,apache-commons-net,Java,Ftp,Apache Commons Net,我正在使用ApacheFTPClient。我是一个像cp-p一样的文件夹中的文件副本,但是来自Java。我如何使用“sendCommand”方法实现这一点,或者是否有其他方法可以实现这一点?rename方法移动文件,但不保留备份副本。没有通过FTP协议复制远程文件的标准方法。一些FTP服务器支持专用或非标准的扩展 因此,如果您很幸运,您的服务器是ProFTPD,您可以使用FTP.sendCommand发出以下两个命令: CPFR sourcepath CPTO targetpath 第二种

我正在使用Apache
FTPClient
。我是一个像
cp-p
一样的文件夹中的文件副本,但是来自Java。我如何使用“sendCommand”方法实现这一点,或者是否有其他方法可以实现这一点?
rename
方法移动文件,但不保留备份副本。

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


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

CPFR sourcepath
CPTO targetpath

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

SITE EXEC cp -p sourcepath targetpath

另一个解决方法是打开到FTP服务器的第二个连接,并通过管道将被动模式数据连接连接到主动模式数据连接,使服务器将文件上载到自身。此解决方案在PHP中的实现如所示


如果这两种方法都不起作用,您所能做的就是将文件下载到本地临时位置,然后将其重新上载回目标位置

另见:

可能的副本