Eu posso sincronizar pastas com rsync -avz /directory /target
, agora eu desejo fazê-lo se eu alterei um arquivo /directory
para rsync
que ele seja chamado automaticamente.
Estou usando o Virtual Box e a pasta compartilhada do Virtual Box é muito lenta, especialmente se você tiver uma página da Web que esteja usando a pasta compartilhada como raiz do documento. Com rsync
eu seria capaz de trabalhar com meus arquivos locais na pasta compartilhada e sincronizá-lo automaticamente com a raiz do documento.
Espero que alguém tenha uma idéia de como fazê-lo, crontab
não seria bom, porque é executado a cada x minutos, por isso, se eu não fizer nada, ele ainda será chamado, rsync
mas não se eu modificar meu arquivo.
Cumprimentos
fonte
inotifywait
solução tem uma desvantagem leve, mas importante: não detecta alterações que ocorreram quandorsync
está em execução. Considere a seguinte situação: o arquivo A foi alterado; rsync é acionado; quando o rsync está quase terminando de sincronizar o arquivo A, o arquivo B é alterado. Agora,rsync
terminou einotifywait
está em execução, mas o arquivo B não está sincronizado e não será sincronizado até alguma próxima alteração. Considere usarlsyncd
como sugerido por @Arigion.Você pode usar o Lsyncd (Live Syncing Daemon) :
Aqui está, por exemplo, um tutorial para o Ubuntu 16.04 .
fonte
Você pode usar
inotifywait
ersync
.inotifywait
com o eventomodify,create,delete
ativado. Dessa forma, você sincronizará com o servidor apenas quando o arquivo for alterado, caso contrário, ele será sincronizado sempre que um arquivo for lido (os editores leem várias vezes o arquivo para verificar se há alguma alteração). Assim disse:fonte
lsyncd
como sugerido por @Arigion.Expandindo levemente um comentário para a resposta aceita, tive sucesso usando o fswatch para acionar um
scp
dos arquivos alterados para o convidado. No Linux, esse é um invólucro,inotify
mas também é multiplataforma (estou em um Mac com um convidado QEMU baseado em Arm). Também aderi a umassh
construção remota. A abordagem push funciona bem com compartilhamentos que se comportam de maneiras menos do que ideais.fonte