Respostas:
Você pode usar as ações do Automator e da Pasta para assistir a pasta e executar o script.
Ao iniciar o Automator e escolher Novo, uma das opções dadas é criar uma 'Ação de Pasta'. Na parte superior da tela, depois de selecionar Ação da pasta, você tem a opção de escolher uma pasta para "assistir".
O que eu acho que você gostaria de fazer no seu caso é selecionar 'Utilities' na coluna mais à esquerda e, em seguida, arraste 'Run Shell Script' da segunda coluna para a janela do fluxo de trabalho.
Aqui é onde você iria escrever o script que você gostaria de executar quando as alterações são feitas para a pasta. Nesse caso, seu script rsync.
Uma solução rápida e suja para essa questão, que é portátil em plataformas UNIX (não específicas do OSX, mas pode ser usada em HP-UX, Solaris, Linux, etc.) é chamar rsync do crontab do usuário e permitir a sincronização de pastas do rsync própria lógica determina se a pasta foi alterada ou não. Um refinamento no uso dessa solução portátil é encapsular a chamada para rsync com um teste de data entre um arquivo tocado (na verdade, seu horário de modificação) e a hora da modificação da pasta a ser sincronizada, mas isso não é necessário, a menos que Sincronizadas são muito grandes (profundas e / ou largas). Uma única pasta com várias subpastas é ideal para esta solução.
Uma entrada para o crontab que executará o caso "rápido e sujo" em um intervalo de pesquisa minucioso é:
# run sync every minute:
* * * * * /usr/bin/rsync -avz $HOME/source_path $HOME/target/path 1>> $HOME/.my_sync.log 2>&1
Isso deve ser feito para o caso rápido e sujo - em outras palavras, as pastas serão mantidas atualizadas dentro de um minuto após a alteração. Verifique o arquivo ~ / .my_sync.log para os status de execução - este arquivo irá crescer sem limites ao longo do tempo, então uma vez que a operação correta tenha sido determinada, altere ">>" para ">" para pelo menos registrar o status mais recente de rsync.
Outro ponteiro é que a opção -z para rsync deve ser usada ao sincronizar através de uma rede. A opção -z fará com que a compactação seja usada para as transferências de arquivos da rede. Ao usar o rsync para sincronizar entre pastas em sistemas de arquivos locais para um servidor, a opção -z geralmente pode ser omitida.
Nota sobre o uso do crontab:
Se você não pode editar seu crontab com:
$ crontab -e
Então você terá que se dar permissão para ter um crontab. Veja a página de manual para crontab. No OSX, isso é o que precisa ser feito - a mudança é um pouco diferente nos sistemas linux: Em poucas palavras, certifique-se de que seu ID de usuário esteja em /usr/lib/cron/cron.allow ou que / usr / lib / cron / cron.allow não existe. Além disso, verifique se o seu ID de usuário não está em /usr/lib/cron/cron.deny.
rsync
einotify
como este