Bem, eu tive o mesmo tipo de problema e é possível usá-los juntos: rsync, SSH Login sem senha, Watchdog (um utilitário de sincronização Python) e Terminal Notifier (um utilitário de notificação do OS X feito com Ruby. Não é necessário, mas ajuda a saber quando a sincronização terminar).
Eu criei a chave do Login sem senha usando este tutorial da wiki do Dreamhost: http://cl.ly/MIw5
1.1 Quando terminar, teste se está tudo bem ... se você não puder fazer o Login sem senha, talvez seja necessário tentar afp mount. O Dreamhost (onde está o meu site) não permite montagem AFP, mas permite Login sem senha. No terminal, digite:
ssh username@host.com
Você deve fazer login sem que as senhas sejam solicitadas: P
Instalei o Notificador de Terminal na página do Github: http://cl.ly/MJ5x
2.1 Eu usei o comando instalador Gem. No Terminal, digite:
gem install terminal-notifier
2.3 Teste se a notificação funciona. No Terminal, digite:
terminal-notifier -message "Starting sync"
Crie um script sh para testar a notificação do rsync +. Salve-o onde quiser, com o nome que desejar. Neste exemplo, chamarei ~ / Scripts / sync.sh Eu usei a extensão ".sh, mas não sei se é necessário.
#!/bin/bash
terminal-notifier -message "Starting sync"
rsync -azP ~/Sites/folder/ user@host.com:site_folder/
terminal-notifier -message "Sync has finished"
3.1 Lembre-se de dar permissão de execução para este script sh. No Terminal, digite:
sudo chmod 777 ~/Scripts/sync.sh
3.2 Execute o script e verifique se as mensagens são exibidas corretamente e se o rsync realmente sincroniza sua pasta local com a pasta remota.
Por fim, baixei e instalei o Watchdog na página do Github: http://cl.ly/MJfb
4.1 Primeiro, instalei a dependência libyaml usando o Brew (há muita ajuda em como instalar o Brew - como uma "aptidão" para o OS X). No Terminal, digite:
brew install libyaml
4.2 Então, usei o "comando easy_install". Vá para a pasta Watchdog e digite Terminal:
easy_install watchdog
Agora, tudo está instalado! Vá para a pasta que você deseja sincronizar , altere esse código de acordo com suas necessidades e digite Terminal:
watchmedo shell-command
--patterns="*.php;*.txt;*.js;*.css" \
--recursive \
--command='~/Scripts/Sync.sh' \
.
Tem que ser EXATAMENTE dessa maneira, com as barras e as quebras de linha, para que você precise copiar essas linhas para um editor de texto, alterar o script, colar no terminal e pressionar return.
Eu tentei sem as quebras de linha e não funciona!
No meu Mac, sempre recebo um erro, mas parece não afetar nada:
/Library/Python/2.7/site-packages/argh-0.22.0-py2.7.egg/argh/completion.py:84: UserWarning: Bash completion not available. Install argcomplete.
Agora, faça algumas alterações em um arquivo dentro da pasta e assista a mágica!
sync
é um utilitário de sistema (pelo menos em cada * nix eu vi; não tem certeza sobre OSX, mas não vejo nenhuma reaosn por que ele não estaria lá). Você pode dar um nome diferente ao seu snippet. Além disso, isso não passa por SSH, que o OP queria; simplesmente passar-e ssh
para o rsync deve corrigir isso.