2

我深情地记得使用 WinSCP 并使用全自动本地到远程同步功能,该应用程序将监视目录层次结构并在发生更改时将更改发送到远程服务器。

OSX 上是否有可以完成相同任务的应用程序?我真的找不到任何东西。当我确实发现有希望的东西时,它总是成为一个传统的同步应用程序,您需要手动启动同步命令,然后它会扫描层次结构以查找更改的文件。这需要很长时间并且不是自动化的。

一直在看文件系统事件 API,想知道是否可以将一个小应用程序与一个小实用程序拼凑在一起,以触发层次结构更改并将更改的目录提供给 rsync 或其他东西。

感谢任何线索!

4

3 回答 3

2

您可以使用两个特定于 Mac 的实用程序来简化您的工作:

这两种工具都将 AppleScript 作为公共线程(可用于执行 shell 命令)。您也许可以编写一个小的 AppleScript,当文件夹更改以调用rsync和执行您需要的服务时启动它。

于 2009-09-11T23:15:56.453 回答
1

好吧,我遇到了同样的问题,可以一起使用:rsync、SSH Passwordless Login、Watchdog(一个 Python 同步实用程序)和 Terminal Notifier(一个用 Ruby 制作的 OS X 通知实用程序。不需要,但有助于了解同步完成时)。

  1. 我使用 Dreamhost wiki 中的本教程创建了无密码登录的密钥:http: //cl.ly/MIw5

    1.1。完成后,测试一切是否正常……如果您无法无密码登录,也许您必须尝试 afp mount。Dreamhost(我的站点所在的位置)不允许挂载 afp,但允许无密码登录。在终端中,键入:

    ssh username@host.com 您应该在不询问密码的情况下登录:P

  2. 我从 Github 页面安装了终端通知程序:http: //cl.ly/MJ5x

    2.1。我使用了 Gem 安装程序命令。在终端中,键入:

    gem install terminal-notifier

    2.3. 测试通知是否有效。在终端中,键入:

    terminal-notifier -message "Starting sync"

  3. 创建一个 sh 脚本来测试 rsync + 通知。以您喜欢的名称将其保存在您喜欢的任何位置。在此示例中,我将其命名为~/Scripts/sync.sh我使用了“.sh 扩展名,但我不知道是否需要它。

    #!/bin/bash terminal-notifier -message "Starting sync" rsync -azP ~/Sites/folder/ user@host.com:site_folder/ terminal-notifier -message "Sync has finished"

    3.1。记得给这个 sh 脚本执行权限。在终端中,键入:

    sudo chmod 777 ~/Scripts/sync.sh 3.2. 运行脚本并验证消息是否正确显示以及 rsync 是否实际将您的本地文件夹与远程文件夹同步。

  4. 最后,我从 Github 页面下载并安装了 Watchdog:http: //cl.ly/MJfb

    4.1。首先,我使用 Brew 安装了 libyaml 依赖项(有很多关于如何安装 Brew 的帮助 - 就像 OS X 的“能力”)。在终端中,键入:

    brew install libyaml

    4.2. 然后,我使用了“easy_install 命令”。进入看门狗文件夹,输入终端:

    easy_install watchdog

  5. 现在,一切都安装好了!转到您要同步的文件夹将此代码更改为您的需要,然后输入终端:

      watchmedo shell-command
          --patterns="*.php;*.txt;*.js;*.css" \
          --recursive \
          --command='~/Scripts/Sync.sh' \
          .
    

    它必须完全这样,带有斜杠和换行符,所以你必须将这些行复制到文本编辑器,更改脚本,粘贴到终端并按回车键。

    我试过没有换行符,它不起作用!

    在我的 Mac 中,我总是收到一个错误,但它似乎没有影响任何事情:

    /Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.

    现在,对文件夹内的一个文件进行一些更改,看看魔术吧!

于 2013-01-21T09:23:12.823 回答
0

我相信传输可以做到这一点。

于 2010-01-21T07:58:50.113 回答