【问题标题】:Dropbox DIY to sync with your server: rsync + FSEvents/inotify/anything else?Dropbox DIY 与您的服务器同步:rsync + FSEvents/inotify/其他?
【发布时间】:2012-04-23 12:58:39
【问题描述】:

长话短说,我需要构建一个简单的保管箱克隆来与我的服务器同步文件。

我做了功课,做了很多研究,但我找到的解决方案(代码和已经烘焙的解决方案)似乎都不够好。

我也阅读了关于 * 的其他帖子,唯一的区别是我需要在文件系统事件上触发同步任务。另外,git 已经被用于真正的版本控制目的,我不能将它用于这个同步任务。

这是我的设置:

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

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

  • 记住这里只针对前端层,涉及到数百个tpl(html + smarty)、css和js文件*

  • master 分支面向公众运行

  • 当登录我们的实时应用程序时,开发人员可以切换到“开发人员模式”并指向服务器上存在的不同存储库。这个“幽灵”存储库只是开发人员本地工作副本的精确副本。它通过 Dropbox 克隆与开发人员的本地存储库保持同步。

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

  1. 开发人员确实在本地处理所有内容
  2. 每次本地更改时,“ghost”开发人员存储库也会更新,并且可以在服务器上进行测试
  3. 当开发人员对结果感到满意时,他可以提交并推送到开发分支
  4. 当团队准备好发布新版本时,可以通过 capistrano 部署所有提交

这样一来,每个开发者的 ghost 仓库在 git 工作流程中就完全不存在了(就 git 而言,这些 ghost 仓库根本不存在,它们只是开发者的一个实用工具)。

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

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

在“已经制定”的解决方案中:

  • GoodSync
  • 超级灵活的文件同步器
  • 计时同步

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

在我必须自己制作的食谱中,我读过 FSEvents、inotify (linux) + rsync 选项,但它们可能有点超出我的范围(我可以做基本的 AppleScript,可能不多使用 FSEvents API 或 inotify)

这就是我现在所处的位置。我愿意接受任何类型的建议,并提前感谢您就该主题分享的任何内容。

谢谢!

【问题讨论】:

    标签: sync dropbox rsync inotify fsevents


    【解决方案1】:

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

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

    还请看以下内容:

    【讨论】:

      【解决方案2】:

      在我看来你正在努力做到这一点。

      我从事的软件项目具有大量源代码库,最好在服务器而不是我的家用计算机上构建,我只是通过 ssh 进入服务器并以这种方式编辑源代码。 (实际上,我使用 NX 来使用远程 X-windows 会话,但它相当于同一件事。)服务器在加利福尼亚,我在英国,延迟不是问题,所以除非你是在糟糕的连接上运行,我看不出有什么更好的意义。

      如果您必须使用本地编辑器,请尝试使用 sshfs 挂载远程系统。这并不理想,但它有效。不过,我不建议以这种方式扫描大量文件。

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

      【讨论】:

      • 您好,感谢您的回答。并非开发团队中的每个人都是控制台文本编辑器的粉丝,因此我们也在努力让他们能够选择最适合他们使用的工具(TextMate,即使是 SublimeText 现在也相当大)。实际上,您在 rsync 上提出了一个很好的观点,我认为这最终是我们要寻求的选择。考虑到有多少开发人员(包括我自己)不能每分钟点击 cmd+s 少于 5 次,每次更改都点击服务器可能有点不负责任:) - 所以我只需要一个苹果脚本来触发 rsync开发者选择的键盘组合
      最近更新 更多