Eu encontrei este comando para copiar o conteúdo da fonte para uma pasta de destino.
rsync -r source/* destination
O que eu realmente gostaria de ter este comando é executado automaticamente cada vez que um arquivo é adicionado à minha pasta de origem.
Isso é possível?
rsync
einotify
como esteRespostas:
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.
fonte
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 é:
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:
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.
fonte
A ferramenta que eu usaria para monitorar suas pastas é Hazel . Seria excelente lançar o script e você pode acabar usando-o para muitas mais pastas ao longo do tempo enquanto pensa em coisas que você poderia automatizar.
fonte