Ну, у меня была такая же проблема, и возможно использовать их вместе: rsync, SSH Passwordless Login, Watchdog (утилита синхронизации Python) и Terminal Notifier (утилита уведомлений OS X, сделанная с Ruby. Не нужна, но помогает узнать когда синхронизация закончится).
Я создал ключ для входа в систему без пароля, используя это руководство из вики Dreamhost: http://cl.ly/MIw5
1.1. Когда вы закончите, проверьте, все ли в порядке ... если вы не можете войти в систему без пароля, возможно, вам стоит попробовать afp mount. Dreamhost (там, где находится мой сайт) не разрешает монтирование afp, но разрешает вход без пароля. В терминале введите:
ssh username@host.com
Вы должны войти в систему без ввода пароля: P
Я установил Terminal Notifier со страницы Github: http://cl.ly/MJ5x
2.1. Я использовал команду установщика Gem. В Терминале введите:
gem install terminal-notifier
2,3. Проверьте, работает ли уведомление. В Терминале введите:
terminal-notifier -message "Starting sync"
Создайте скрипт 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 фактически синхронизирует вашу локальную папку с удаленной папкой.
Наконец, я скачал и установил 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
Теперь все установлено! Перейдите в папку, которую вы хотите синхронизировать , измените этот код в соответствии со своими потребностями и введите в Терминале:
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.
Теперь внесите некоторые изменения в файл внутри папки и наблюдайте за волшебством!
sync
это системная утилита (по крайней мере, на каждом * nix, который я видел; не уверен насчет OSX, но не вижу причин, почему его там не будет). Возможно, вы захотите дать вашему отрубленному другое имя. Кроме того, это не идет по SSH, который хотел OP; просто переход-e ssh
на rsync должен исправить это.