如何在Java中复制远程服务器上的文件?

时间:2011-07-31 01:32:53

标签: java ssh

我正在尝试找到一种方法将一系列文件/文件夹从服务器上的一个部分复制到同一服务器上的新目录。我考虑用FTP做这个,但它似乎是严格的转移,而不是更改服务器本身的文件。因此,我一直在研究SSH,并想知道是否可能这样。可能吗?如果没有,是否有另一种方式,或者更简单的方法来做到这一点?非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:1)

我不确定这是否是最佳方式,但是,如果您具有对服务器的SSH访问权限,则可以SSH并使用系统的本机复制命令。我建议您使用Jsch库在框中进行SSH,然后只需调用相应的命令(cpcopy)。

Jsch没有提供任何文档,但它们包含大量示例代码。您可以按照Exec.java文件向您展示如何在远程服务器上执行命令。而且,fyi,他们在他们的例子中使用了大量的挥杆代码。如果您不想使用swing用户名/密码提示,可以轻松删除所有内容。

答案 1 :(得分:1)

是的,FTP和SFTP(SSH的文件传输模式)主要用于在客户端和服务器之间传输文件。此外,它们还支持一些管理任务(如创建目录,设置模式,列出文件,删除文件/目录,甚至重命名文件),但不复制文件而无需下载和重新上传。

正如Jon7和Mark所提议的那样,你可以(每个ssh)调用远程服务器的本机复制命令(Windows上的copyxcopy,类Unix系统上的cp}来执行假设您有shell访问权限(不仅是SFTP或某些强制命令)。

如果使用JSch,exec channel就可以在这里使用。