将服务器群集中的文件从服务器移动到服

时间:2011-07-13 19:09:49

标签: php file-upload file-io cluster-computing

**前言:我对网络知之甚少。如果我描述设置错误,我会再试一次。 **

我有一个服务器集群serverA,serverB和serverC都在防火墙和交换机后面。我想以编程方式将文件从serverA移动到serverB。过去当我不得不将serverA上的文件移动到serverA上的另一个位置时,我只需要调用exec(“sudo mv file1 / home / user / file1”);当涉及多个服务器时,我还可以这样做吗?

编辑:所有伟大的回应家伙。我研究一下服务器是如何集群的,看看它是挂载还是发生了什么。谢谢大家!你们是我的英雄!

4 个答案:

答案 0 :(得分:1)

首先,您应该使用本机函数来移动文件。请参阅renamehttp://us2.php.net/rename。这只是意味着您需要确保两个位置的权限都正确(可能需要apache用户拥有)

但是在回答你的实际问题时,这实际上取决于设置。通常,您可以将文件移动到另一个服务器将具有挂载点,它看起来像任何其他目录,因此您根本不需要对代码进行任何更改。这可能是最好的方法。

如果你必须使用FTP或类似的东西,你需要使用适当的库来满足任何所需的协议。

答案 1 :(得分:1)

如果使用安装到所有服务器的通用共享,例如nfs,则可以在文件上使用mv。

如果您没有该选项,可以使用scp或rsync将文件传输到另一台服务器。

答案 2 :(得分:1)

您可以使用linux命令行工具SCP通过SSH在网络上复制文件

确保在服务器上配置了SSH证书。

示例:

exec("sudo cp [-Cr] [[user@]ServerA:]/path/to/file [more...] [[user@]SERVERB:]/path/to/file

答案 3 :(得分:1)

虽然这个选项设置起来可能有点复杂,但我要指出UDP hole Punching

如果知道并修复了所有服务器的地址,它就能够穿越防火墙和NAT网络。

原则上,portpunching的工作原理如下:

A和B成为两个主机,每个主机都在自己的专用网络中; N1和N2是两个NAT设备

  • A和B尝试创建彼此的UDP连接
  • 很可能两次尝试都失败了,因为还没有准备好孔
  • 但是:NAT设备N1和N2创建UDP转换状态并分配 临时 外部端口号
  • A和B直接在翻译端口上联系对方的NAT设备; NAT设备使用先前创建的转换状态并将数据包发送到A和B

这甚至有效,A和B的地址彼此不了解。在这种情况下,需要一个公知的中间系统S 。请参阅Wikipedia article了解详情。