Ну, у мене були такі ж проблеми, і можливо використовувати їх разом: 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
Я встановив повідомлення про термінали зі сторінки 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 насправді синхронізує вашу локальну папку з віддаленою папкою.
Нарешті, я завантажив і встановив сторожову службу зі сторінки Github: http://cl.ly/MJfb
4.1. По-перше, я встановив залежність від libyaml за допомогою Brew (є велика допомога, як встановити Brew - як "придатність" для 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' \
.
Це повинно бути ТОЧНО таким чином, з косою рискою та розривами рядків, тому вам доведеться скопіювати ці рядки в текстовий редактор, змінити сценарій, вставити в термінал і натиснути 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.
Тепер внесли деякі зміни у файл всередині папки, і спостерігайте за чарами!
sync
це системна утиліта (принаймні, на кожному * nix, який я бачив; не впевнений у OSX, але не бачиш, чому його там не було). Ви можете надати іншим ім’ям інше ім’я. Крім того, це не стосується SSH, чого хотіла ОП; просто перехід-e ssh
до rsync повинен це виправити.