Dropbox DIY与您的服务器同步:rsync + FSEvents / inotify /其他?

时间:2012-04-23 12:58:39

标签: sync dropbox rsync inotify fsevents

总而言之,我需要构建一个简单的Dropbox clone来与我的服务器同步文件。

我完成了我的作业,我做了很多研究,但我找到的解决方案(包括代码和已经解决的解决方案)似乎都不够好。

我已经在stackoverflow上阅读了其他帖子,唯一的区别是我需要在文件系统事件上触发同步任务。此外,git已用于实际版本控制目的,我无法将其用于此同步任务。

这是我的设置:

我在github上有一个git存储库,我使用capistrano进行常规部署。这就是我的问题:我们有基础设施和数据影响,这使得无法进行真正的本地开发。

我的代码可以在本地存在,我可以在github上对其进行版本化,但需要在服务器上运行,即使我在开发时也是如此。 为了避免牛仔的发展,我提出了这个解决方案:

  • 请记住,这仅适用于前端层,涉及数百个tpl(html + smarty),css和js文件*

  • 主分支为公众运行

  • 登录我们的实时应用时,开发人员可以切换到"开发者模式"并指向服务器上存在的其他存储库。这个"幽灵"存储库只是开发人员本地工作副本的精确副本。它通过dropbox clone与dev的本地存储保持同步。

这样,这可以是我们的工作流程:

  1. 开发人员在本地工作所有的东西
  2. 每次在本地更改某些内容时," ghost"开发人员资源库也已更新,可在服务器上测试内容
  3. 当开发人员对结果感到满意时,他可以提交并推送到开发分支
  4. 当团队准备好发布新版本时,可以通过capistrano
  5. 部署所有提交

    这样,当谈到git工作流时,每个开发人员的ghost存储库都完全没有了(就git而言,这些ghost存储库甚至不存在,它们只是一个实用程序开发商)。

    鉴于这个(很长!)前提,这些是我需要的功能:

    • 通过ssh同步的能力
    • 触发文件系统事件的同步(创建/更新/删除文件和目录)
    • 仅同步rsync样式(delta编码)中的更新,基本上只是差异
    • 可能是跨平台(windows / mac)解决方案

    已经制作的""解决方案:

    • 的GoodSync
    • 超灵活文件同步器
    • ChronoSync

    只有GoodSync似乎提供了我需要的东西,但我无法以任何可能的方式使自动更新功能(文件系统更新同步)工作。

    在我必须自己制作的食谱中,我已经阅读了有关FSEvents,inotify(linux)+ rsync选项的信息,但它们可能有点超出了我的联盟(我可以做基本的应用程序,使用FSEvents API或inotify可能不是很多)

    所以这就是我现在所处的位置。我对任何类型的建议持开放态度,我事先感谢您就此问题分享的任何内容。

    谢谢!

2 个答案:

答案 0 :(得分:2)

使用lsyncd和samba共享实现Windows兼容性

我会推荐一个带有samba共享的本地linux服务器,开发人员可以在本地工作。然后,本地服务器将使用lsyncd(用户友好的inotify / rsync / ssh解决方案)与远程服务器同步。我已经部署了一个非常成功的解决方案,它很容易设置(没有高级/自定义脚本)。

另请参阅以下内容:

答案 1 :(得分:0)

在我看来,你正试图以艰难的方式去做。

我在一个拥有大量源代码的软件项目上工作,最好是在服务器而不是我的家用机器上构建,我只需要进入服务器并以这种方式编辑源代码。 (实际上,我使用NX来使用远程X-windows会话,但它也是相同的。)服务器在加利福尼亚,我在英国,延迟不是问题,所以除非你是在一个可怕的连接上运作,我没有看到任何更高级的点。

如果必须使用本地编辑器,请尝试使用sshfs安装远程系统。它并不理想,但它有效。我不建议做那些扫描很多文件的东西。

否则,如果您必须使用镜像目录,为什么它必须是自动的?当然,开发人员知道他何时想测试更改并且只能点击rsync按钮?