OSX等效的WinSCP全自动本地远程SFTP同步?

时间:2009-09-11 22:52:43

标签: macos automation ssh sftp filesystemwatcher

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

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

一直在查看File System Events API,想知道是否可以将一个小应用程序与一个小实用程序拼接在一起,以触发层次结构更改并将更改后的目录提供给rsync等。

感谢任何潜在客户!

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

好吧,我遇到了同样的问题,可以一起使用:rsync,SSH无密码登录,Watchdog(Python同步实用程序)和终端通知程序(使用Ruby制作的OS X通知实用程序。不需要,但是有助于了解同步完成的时间。)

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

    1.1。当你完成后,测试一切是否正常......如果你不能无密码登录,也许你必须尝试afp mount。 Dreamhost(我的网站所在地)不允许afp mount,但允许无密码登录。在终端中,键入:

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

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

    2.1。我使用了Gem installer命令。在终端中,键入:

    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的“aptitude”)。在终端中,键入:

    brew install libyaml

    4.2。然后,我使用了“easy_install命令”。转到Watchdog文件夹,然后输入终端:

    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.

    现在,对文件夹内的文件进行了一些更改,并观看魔术!

答案 2 :(得分:0)

我相信传播就是这样。