OSX эквивалент полностью автоматизированной локальной удаленной синхронизации SFTP WinSCP - PullRequest
2 голосов
/ 12 сентября 2009

Я с любовью помню, как работал с WinSCP и использовал полностью автоматизированную локальную-удаленную синхронизацию, где приложение отслеживало иерархию каталогов и отправляло изменения на удаленный сервер по мере их возникновения.

Есть ли в OSX приложение, которое выполняет то же самое? Я действительно не смог ничего найти. Когда я нахожу что-то многообещающее, оно всегда оказывается традиционным приложением синхронизации, где вам нужно вручную запустить команду синхронизации, а затем она сканирует иерархию, чтобы найти измененные файлы. Это занимает слишком много времени и не автоматизировано.

Рассматривал API событий файловой системы , задаваясь вопросом, можно ли объединить небольшое приложение с небольшой утилитой для запуска изменений иерархии и передачи измененного каталога в rsync или что-то подобное.

Спасибо за любые предложения!

Ответы [ 3 ]

2 голосов
/ 12 сентября 2009

Существует две утилиты для Mac, которые вы можете использовать для облегчения своей работы:

Оба инструмента имеют AppleScript в качестве общего потока (который может использоваться для выполнения команд оболочки). Возможно, вы сможете написать небольшой AppleScript, который запускается, когда папка меняется на rsync, и выполнять требуемую службу.

1 голос
/ 21 января 2013

Ну, у меня была такая же проблема, и возможно использовать их вместе: rsync, SSH Passwordless Login, Watchdog (утилита синхронизации Python) и Terminal Notifier (утилита уведомлений OS X, сделанная с Ruby. Не требуется, но помогает узнать, когда синхронизация закончилась).

  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. Наконец, я скачал и установил Watchdog со страницы Github: http://cl.ly/MJfb

    4,1. Во-первых, я установил зависимость libyaml с помощью Brew (есть много полезного, как установить Brew - как «aptitude» для OS X). В Терминале введите:

    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' \
          .
    

    Это должно быть ИМЕННО таким образом, с косой чертой и разрывами строк, поэтому вам придется скопировать эти строки в текстовый редактор, изменить скрипт, вставить в терминал и нажать return.

    Я пытался без разрывов строки, и это не работает!

    На моем 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.

    Теперь внесли некоторые изменения в файл внутри папки и наблюдайте за магией!

0 голосов
/ 21 января 2010

Я считаю, что передача делает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...