试图找到一种在一台“部署”计算机和几台“目标”计算机之间复制代码的好方法,希望是并行的。这个想法是部署计算机保存文件的副本,因为它们应该被复制到目标服务器。我们希望并行进行复制,因为它可能涉及数十个目标服务器。
我们当前的方案涉及使用rsync
同步文件所在的包含目录,以使目标服务器在部署服务器上保持最新。
所以,问题是:
- 有什么好的/更好的方法来做到这一点?
- 使用什么样的工具来做到这一点?
- 是否应该从我完全错过的不同角度或角度来面对这个问题?
非常感谢!
试图找到一种在一台“部署”计算机和几台“目标”计算机之间复制代码的好方法,希望是并行的。这个想法是部署计算机保存文件的副本,因为它们应该被复制到目标服务器。我们希望并行进行复制,因为它可能涉及数十个目标服务器。
我们当前的方案涉及使用rsync
同步文件所在的包含目录,以使目标服务器在部署服务器上保持最新。
所以,问题是:
非常感谢!
有一个名为 clusterssh 的程序可以在基于 debian 的操作系统上使用(但我能够使用 RPM 将它安装到 RHEL 6.3 上并解决其他依赖项),它允许您使用单个输入打开多台机器的 ssh 终端位置(这允许您在打开终端的机器上键入一次)。然后你只需要使用一个简单的 scp。我已经使用这个程序将一个文件从一个开发工作站同时移动到多达 25 个其他工作站,但是这个选项只有在你试图完成你在问题中所说的事情时才真正有用,即复制文件从一台计算机传输到其他几台计算机。
这不是一种有效的同步机制。如果您真的希望它同步,那么上面的答案将是最好的。
我们使用 lftp 命令将我们的远程 Web 服务器同步到我们的本地备份机器。我们编写了一个 BaSH 脚本来自动将服务器上的所有备份同步到本地机器上,并且我们将该脚本设置在 cron 上以每晚运行。
rsync 是处理此问题的好方法,如果还没有,我可能会建议将您当前的协议移动到 cron 设置中。
如果您需要该功能, Unison也是一种可用于设置双向同步的工具。
希望这可以帮助!
另一种选择是 pdsh,一个并行的分布式 shell。它可从 EPEL 获得,并允许在多个节点上并行运行远程命令(通过 ssh)。例如:
pdsh -w node10,node11,node12 command
在所有三个节点上并行运行“命令”。它还有一个方便的主机名表达式功能,可以用更少的输入来做同样的事情:
pdsh -w node[10-12] command
它还包括 pdcp 命令将文件并行复制到多个节点。(需要在所有节点上安装 pdsh 软件包才能使 pdcp 正常工作。)
pdcp -w node[10-12] /local/file /remote/dir/
本地文件被复制到所有三个节点上的 /remote/dir。