在计算机之间并行同步文件(在CentOS中)有什么好的模式?

时间:2013-07-02 22:03:58

标签: file synchronization copy rsync scp

试图找到一种在一台“部署”计算机和几台“目标”计算机之间复制代码的好方法,希望并行。这个想法是部署计算机保存文件的副本,因为它们应该被复制到目标服务器。我们希望并行进行复制,因为它可能涉及数十个目标服务器。

我们当前的方案涉及使用rsync来同步文件所在的包含目录,以便在部署服务器上使目标服务器保持最新。

所以问题是:

  1. 这样做有什么好/更好的方法?
  2. 使用什么样的工具来做这件事?
  3. 这个问题是否应该从我完全失踪的不同角度或角度来面对?
  4. 非常感谢!

3 个答案:

答案 0 :(得分:1)

我们使用lftp命令将远程Web服务器同步到本地备份计算机。我们写了一个BaSH脚本来自动将服务器上的所有备份同步到本地盒子,然后我们在cron上设置该脚本以便每晚运行。

rsync是处理此问题的一种很好的方法,我建议将当前协议移动到cron设置(如果尚未安装)。

Unison也是一种可用于设置双向同步的工具,如果您需要该功能。

希望这有帮助!

答案 1 :(得分:1)

有一个名为clusterssh的程序可用于基于debian的操作系统(但我能够使用RPM将其安装到RHEL 6.3并解析其他依赖项),这将允许您为多台计算机打开一个ssh终端,单个输入位置(这允许您在打开终端的机器上键入一次)。然后你只需要使用一个简单的scp。我已经使用这个程序将文件从开发工作站同时移动到多达25个其他工作站,但是这个选项只有在你试图完成你在问题中所说的内容时才真正有用,即复制从一台计算机到其他几台的文件。

这不是一种有效的同步机制。如果你真的希望它同步,那么上面的答案将是最好的。

答案 2 :(得分:1)

另一种选择是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。