作为我们开发工作stream的一部分,我们希望我们的构build服务器将我们编译的二进制文件和其他构build工件发布到一些基于局域网的复制文件系统。 理想情况下,我们只需要构build服务器根据构build版本将构build工件放到文件夹中,并将该文件夹的内容复制到本地的每个开发人员工作站。 一旦发布,每个构build是静态的,不会改变。 我们没有很强的一致性要求,我们只需要一分钟左右就可以在每个开发人员工作站上使用这些文件。 所有机器都是基于Linux的。
最简单的解决scheme可能是一个rsync + cron的NAS,但感觉笨重。 是否有另一个分布式/复制文件系统支持上述要求? 我们研究了Amazon S3 + s3fs,但是这个过程非常缓慢。
在许多方面,这感觉就像来自web服务器场景中的权威来源的传统镜像,例如www1,www2等。
如果您只需要单向复制,则实际上不需要分布式文件系统。 这引起了很多复杂的事情 ,没有任何收获。 我会去的rsync方法。 如果构build成功,那么构build脚本的最后一步就是推出构件。 如果您不希望将其作为构build脚本的一部分,则可以使用cron以一定的时间间隔执行此操作,或者在创build或修改文件时使用lsyncd来执行此操作。
我认为AFS (或OpenAFS )可能是一个很好的解决scheme。 它从2.6.10开始在linux内核中实现,并使用Kerberos进行身份validation。
我也build议用分布式版本控制系统(如git解决这个问题。 您可以使用提交钩子来保持每个人都是最新的,并且通过在文件系统级别不执行此操作而获得的独立性可以为您节省大量的可靠性问题。 你甚至可以find其他的东西版本的好处。