Dropbox DIY 与您的服务器同步:rsync + FSEvents/inotify/任何其他内容



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

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

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

这是我的设置:

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

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

  • 请记住,这仅适用于前端层,涉及数百个TPL(HTML + Smarty),CSS和JS文件 *

  • 主分支面向公众运行

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

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

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

这样,当涉及到 git 工作流时,每个开发人员的幽灵存储库完全不在画面中(就 git 而言,这些幽灵存储库甚至不存在,它们只是开发人员的实用程序)。

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

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

在"已经做出的"解决方案中:

  • 好同步
  • 超级灵活的文件同步器
  • 时间同步

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

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

这就是我现在所处的位置。我对任何类型的建议都持开放态度,我提前感谢您就该主题分享的任何内容。

谢谢!

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

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

另请查看以下内容:

  • 俄罗斯国际航空公司(跨平台)
  • OwnCloud(跨平台)
在我看来

,你正在尝试以艰难的方式做到这一点。

从事的软件项目具有较大的源代码库,最好构建在服务器上,而不是我的家用机器上,我只需 ssh 到服务器并以这种方式编辑源代码。(实际上,我使用 NX 来使用远程 X-windows 会话,但它相当于一回事。服务器在加利福尼亚,我在英国,延迟不是问题,所以除非你通过糟糕的连接操作,否则我看不出有什么比这更花哨的了。

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

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

最新更新