Macos 在Mac OSX机器和Linux机器之间修改目录/文件时自动同步的脚本

Macos 在Mac OSX机器和Linux机器之间修改目录/文件时自动同步的脚本,macos,bash,synchronization,rsync,Macos,Bash,Synchronization,Rsync,我的Mac上有一些源代码,为了测试,我想将它与包含类似web服务器设置的VM同步到生产环境中。因此,我需要能够在每次发生更改时自动将文件复制到VM 我知道,每当脚本运行时,我都可以使用rsync手动执行此操作,但每次修改特定目录或其子目录中的文件时,我都需要某种方法使其在后台运行 我知道inotifywait存在于Linux机器上,可以解决这个问题。我还了解了FSEvents API和kqueue。然而,这些似乎都不能从命令行访问,我真的不想花很长时间做一些事情来做到这一点 我想我可以使用cro

我的Mac上有一些源代码,为了测试,我想将它与包含类似web服务器设置的VM同步到生产环境中。因此,我需要能够在每次发生更改时自动将文件复制到VM

我知道,每当脚本运行时,我都可以使用rsync手动执行此操作,但每次修改特定目录或其子目录中的文件时,我都需要某种方法使其在后台运行

我知道inotifywait存在于Linux机器上,可以解决这个问题。我还了解了FSEvents API和kqueue。然而,这些似乎都不能从命令行访问,我真的不想花很长时间做一些事情来做到这一点

我想我可以使用cronjob,但等待网站上的变化一分钟是相当长的时间


有什么想法吗?

使用git或mercurial之类的DVCS,让本地回购运行post-commit钩子来运行rsync,然后运行测试本身怎么样


我有点困惑为什么不能从运行测试的同一个脚本运行rsync。如果运行
rsync-esh
,则可以在VM和Mac之间设置自动公钥身份验证。在这种情况下,不会有任何关于rsync的手册。

我一直在这样做,在Windows/Linux/Mac工作站上开发,并将更改保存到远程Linux服务器,在那里它们会立即返回到我的工作站浏览器进行测试。您有两个选择:

  • 您可以在本地挂载远程文件(如通过sshfs)并直接对其进行更改。也就是说,你的Mac电脑认为文件是本地的,所以你可以用你的GUI编辑器编辑它们,但是当你选择File->Save时,它实际上是远程保存文件。这样做的主要缺点是,与服务器断开连接时无法工作

  • 远程装载本地文件。这将允许您在断开连接时在本地工作,但不允许测试站点在断开连接时工作——这可能不是什么大问题。如果您在远程服务器上没有正确的工具/访问权限,则此选项可能不可行

  • (我的偏好)使用NetBeans IDE,它有一个非常好的“复制到远程”功能。您可以在本地维护所有文件的完整副本,并直接对其进行编辑。当您点击文件->保存文件时,NetBeans会将其保存在本地,并以scp/ftp方式透明地保存到远程服务器


  • 您可能可以设置一个启动的代理来执行简单设置所需的操作。有关launchd
    WatchPath
    键的更多信息,请参阅和。但是看起来,
    WatchPath
    可能不适用于。

    我不认为他在做“运行单元测试脚本”中的测试——听起来他在本地编辑源文件,将它们复制到服务器上,然后点击浏览器上的刷新以查看更改。