gpt4 book ai didi

synchronization - rsync 可以支持一对多同步吗?

转载 作者:行者123 更新时间:2023-12-04 07:22:28 24 4
gpt4 key购买 nike

我可以从我工作的“模型”站点同步更改,跨越数百个站点 在同一台服务器上 使用 rsync ?
我将更新通用模板文件和 JS 脚本。如果可能,我将如何设置?
(我在 Hostgator 专用服务器上,运行 Apache)

最佳答案

阅读我对下面已编辑问题的扩展答案。

最简单和天真的方法可能是设置一个脚本,该脚本只为您要同步的每个服务器运行 rsync。

在大多数情况下这很好,但我认为这不是您要找的东西,因为您自己会发现这一点......

这种方法也有以下缺点:

  • 一台服务器发送所有流量,没有级联。所以它是单点故障和瓶颈
  • 这是非常低效的。 rsync 是一个很好的工具,但是解析文件列表和检查差异并不是很快,如果你想同步数百台服务器

  • 但你能做什么呢?

    为多个服务器配置 rsync 显然是最简单的方法。所以你应该从那个开始并优化你的问题所在。

    例如,您可以通过使用正确的文件系统来加快速度。 XFS 可能比 Ext3 快 50 倍。

    您还可以使用更强大的工具 unison,并将文件列表保存在缓存中。

    您还可以设置级联(服务器 A 同步到服务器 B 同步到服务器 C)。

    您还可以设置拉动而不是由您的客户插入。您可以有一个子域,它是负载平衡器的入口点,在那里您有 1 个或多个服务器,通过从源服务器推送在这些服务器后面进行同步。

    我之所以告诉你这一切,是因为没有完美的方法,你必须根据自己的需要去想办法。

    但是,我绝对建议您查看 GIT。

    Git 是一个非常强大和高效的版本控制系统。

    您可以创建一个 git 存储库并推送到您的客户端机器。

    它运行良好且高效,并且灵活且可扩展,因此您几乎可以在此结构上构建任何东西,包括分布式文件系统、级联、负载平衡等。

    希望我在您可以研究的正确方向上给了您一些观点。

    编辑:

    所以看起来您想在同一台服务器上同步更改 - 甚至是同一个硬盘(我不知道,但对于您拥有的可能性非常重要)。

    那么基本上它都是一样的。插入-覆盖-删除...
    Rsync 也是一个非常棒的工具,因为它可以增量地传输更改。不仅“恢复中断的传输”。

    但我会说这完全取决于内容。

    如果你有很多小文件,比如你说的模板、javascript等,rsync可能会很慢。完全删除源文件夹并再次将文件复制到那里可能会更快。因此 rsync(或任何其他工具)不必检查所有文件的更改等。

    您也可以使用 -rf 开关复制所有内容,这样所有内容都将被覆盖,但是您可能会在那里删除旧文件。

    我也知道很多使用 subversion 完成这些事情的情况,因为人们觉得有更多的控制权或我不知道的东西。它也更灵活。

    但是,您应该考虑一件事:

    有共享数据的概念。

    有符号链接(symbolic link)和硬链接(hard link)。

    你可以把它们放在文件和文件夹上(硬链接(hard link)只放在文件上。我不知道为什么)。

    如果您将符号链接(symbolic link) A 放在目标 B 上,该文件看起来就像符号链接(symbolic link)一样被定位和命名,但背后的资源却完全不同。
    但应用程序可以区分。例如,Apache 必须配置为遵循符号链接(symbolic link)(否则这将是一个安全问题)。

    因此,如果您的更改都在一个文件夹中,您只需放置一个名为该文件夹的符号链接(symbolic link),指向您的文件夹,您就不必担心再次同步,因为它们共享完全相同的资源。

    但是,您不希望这样做是有原因的:
  • 他们看起来不一样。 - 这听起来很荒谬,但实际上,这是人们不喜欢符号链接(symbolic link)的最常见原因。人们提示是因为他们“在他们的程序中看起来很奇怪”或其他什么。
  • 符号链接(symbolic link)在某些功能上受到限制,但因此具有其他巨大的优势。像跨文件系统指向等。但是。几乎所有的缺点都可以很好地处理并在您的应用程序中解决。可悲的事实是,符号链接(symbolic link)是 linux oses 和文件系统的基本特征,但是在开发应用程序时有时会忘记它们的存在。就像开发火车却忘了也有长腿的人什么的...

  • 另一方面,硬链接(hard link)确实看起来像文件,因为它们是文件。

    每个指向一个文件的硬链接(hard link)就是那个文件。

    这听起来令人困惑,但请按以下方式思考:

    每个文件都是光盘上的一些数据。然后有一些 inode 指针,它位于某个目录中,某个名称指向该资源。

    硬链接(hard link)就是这样。该文件只有多个“列表”。

    因此,它们共享相同的读锁,一起被修改/删除/等等。

    然而,这当然只能在一个文件系统/设备上完成,而不是跨设备。

    链接有一些很大的优势。它们很明显:

    您没有重复的数据。这消除了不一致的可能性,您不必更新并且需要更少的磁盘空间。

    然而,这有时具有更重要的意义。

    例如,如果您运行多个网站并且所有网站都使用 Zend 框架。

    这是 shitload 巨大的框架,它的操作码缓存将填满 50 兆内存或其他东西。

    如果您的网站有相同的 zend 库文件夹,则只需一次。

    关于synchronization - rsync 可以支持一对多同步吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4389679/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com