【发布时间】:2014-03-06 13:27:21
【问题描述】:
我正在开发一个类似 DeployIt 的应用程序,其中一个文件(例如 JAR)必须从一台服务器复制并粘贴到另一台服务器。最重要的方面是它必须以原子方式完成,没有中间环境(如 localhost)。
我已设法将文件从一台服务器复制到本地计算机,然后再复制到目标服务器,但此操作非常耗时,我们负担不起。
URL url = new URL(path);
File result = new File("C:\\" + fileName);
FileUtils.copyURLToFile(url, result); // copy to local machine
FileObject localFile = manager.resolveFile(f.getAbsolutePath());
FileObject remoteFile = manager.resolveFile(
createConnectionString(hostname, username, password, remoteFilePath, f.getName()), createDefaultOptions());
remoteFile.copyFrom(localFile, Selectors.SELECT_SELF); // copy to target server
如何一步完成?
【问题讨论】:
-
您有这些服务器的 CLI 访问权限吗?如果是,您是否尝试过 scp/rsync?
-
你不能这样做。即使您没有“正式”将文件存储在本地主机上的文件系统上,也必须将其全部下载到您的机器上,然后发送到另一台服务器。
-
您使用哪些 API?
FileUtils是什么?FileObject是什么? -
@user11153 抱歉,这是错误的;您可以使用内存缓冲区来做到这一点。不过,这并非没有风险。
-
@fge 即使使用内存缓冲区,您也正在逐块下载,但最终仍然是完整的(但不是一次完整,是的)。