我们的 Intranet 上有一个文件夹结构,其中包含大约 800,000 个文件,分为大约 4,000 个文件夹。我们需要将其同步到我们 DMZ 中的一小部分机器。结构的深度非常浅(它永远不会超过两层深)。
大多数文件永远不会改变,每天有几千个更新文件和 1-2000 个新文件。数据是在源数据已被清除的地方维护的历史报告数据(即,这些是源数据足够旧以至于我们存档和删除它的最终报告)。每天同步一次就足够了,因为它可以在合理的时间范围内发生。报告是在一夜之间生成的,我们早上第一件事就是同步作为计划任务。
显然,由于很少有文件定期更改,我们可以从增量复制中受益匪浅。我们已经尝试过 Rsync,但是仅仅完成“构建文件列表”操作就可能需要长达八到十二个小时的时间。很明显,我们正在迅速超越 rsync 的能力(12 小时的时间框架太长了)。
我们一直在使用另一个名为 RepliWeb 的工具来同步结构,它可以在大约 45 分钟内完成增量传输。然而,我们似乎已经超出了它的限制,它已经开始看到文件显示为删除,而实际上它们不是(也许某些内部内存结构已经耗尽,我们不确定)。
有没有其他人遇到过这种大规模的同步项目?是否有设计用于处理像这样的大量文件结构以进行同步?
我希望我所有的一致配置文件都有
merge = Name * -> meld CURRENT1 CURRENT2
diff = /usr/bin/meld CURRENT1 CURRENT2
confirmmerge = true
Run Code Online (Sandbox Code Playgroud)
作为选项。我知道我可以添加这些选项到每个.prf
文件中~/.unison/
,但其所有齐声配置文件的全局配置文件将是可取的。有这样的文件吗?
我有一个应用程序场,它生成缩略图并使用 nfs 将它们提供给 Web 服务器场。但是性能太差,所以我要在每个网络节点上制作文件的本地副本。
我查看了 unison 和 lsync,但似乎没有可从 centOS5.5 存储库中获得的 rpm。
我应该使用哪个,或其他一些策略。我非常需要立即同步,因为用户需要立即在网页上显示缩略图,所以基于 inotify 的工具很好!
编辑:当我说立即,我的意思是推出而不是按某个时间表拉动。
最后,lsync 发布了更多版本,所以我使用了它,lsync 在运行后运行良好(即在几秒钟内同步)但是它需要事先枚举每个目录,对于非常大的文件系统需要很多小时..
我需要实现某种 HA 设置,其中两台服务器需要能够始终保持同步,无论您在哪一台服务器上写入。数据库部分可以通过主主复制设置来覆盖。然而,当涉及到文件和内容时,我一直无法找到能够很好地满足这些需求的东西。例如,我需要能够将 /var/www 从一台机器复制到另一台机器,并且能够在其中任何一台机器中进行写入,并且无论 http 请求发送到何处,始终具有相同的可用内容。
所以我不确定双向复制是否是通常不做的事情,我需要重新考虑这一点,或者我还没有对此进行足够的研究,但我不知所措。我似乎没有找到其他解决方案。
还有其他东西可以处理自动透明的双向文件复制吗?
我经常使用 Unison 在用户工作的工作站之间同步用户的主目录。不幸的是,随着公司的发展,Unison 在确定哪些文件已更改方面变得越来越慢。相比之下,实际传输所花费的时间可以忽略不计。
同步是在星型拓扑中完成的,RAID-6一致服务器位于中心。有些工作站使用 Windows(使用 NTFS),有些工作站使用 Ext-4 或 BTRFS(!)。
在撰写本文时,有一位用户的主目录有 45GB 大,包含 100K 文件,他的完全同步时间大约需要 30 分钟。请注意,简单的目录遍历find >null
只需不到 2 分钟。
进一步加快这一进程的策略是什么?(除了减少要同步的文件数量)我相信理论上 Unison 可以加速,但这个fastcheck
选项还不够。
我刚刚为自己编译了 unison 2.48.4。它在正常调用后完美工作,但unison-fsmonitor
不会影响任何文件系统更改,并且不会同步任何内容。文件系统是EXT4。
-debug all/verbose
不带任何日志。它在终端上放置的唯一内容是VERSION 1
,按任意键后,它会终止并显示消息:ERROR unknown%20command%20''
无论是使用 sudo 调用还是作为普通用户调用。~/.unison/unison.log 中没有任何内容 关于可能的原因有什么想法吗?有什么想法如何调试它吗?
unison ×6
rsync ×3
linux ×2
backup ×1
centos ×1
filesystems ×1
glusterfs ×1
inotify ×1
replication ×1