Cenário: Um IDE é configurado em uma caixa de desktop Linux, editando arquivos PHP localmente. Sempre que eu salvar um arquivo, quero que essa alteração apareça no servidor linux em que o Apache está sendo executado. O servidor possui ssh (e samba e nfs).
Como referência, quando editei arquivos no Windows, finalmente encontrei o WinSCP como a ferramenta exata de que precisava - o WinSCP possui apenas esse recurso presente, com sincronização inicial e atualização contínua, usando o serviço de monitoramento de sistema de arquivos: "Mantenha o Diretório Remoto atualizado Encontro".
No Linux, alguém poderia argumentar que os sshfs poderiam ser empregados para contornar completamente a necessidade de sincronização. No Windows, um compartilhamento de samba faria o mesmo. No entanto, quero que o IDE funcione com arquivos locais (em um disco SSD!), Sem precisar passar pela rede para fazer indexação PHP e outras coisas, o que leva anos.
Porém, o sshfs pode fazer parte da solução - portanto, a sincronização contínua só precisa ser feita entre dois diretórios locais.
Alguma idéia ou sugestões?
Respostas:
Você também pode usar
inotifywait
o pacote inotify-tools.fonte
rsync
/scp
tem um atraso irritante ao estabelecer a conexão ssh.Lsyncd seria uma boa solução para isso.
Resumindo, ele usa o mesmo tipo de ferramentas para realizar o trabalho (inotify e rsync), conforme sugerido por outras respostas, mas é mais fácil de configurar para alguém que não esteja familiarizado com scripts de shell.
fonte
Preciso muito disso, pois meu código precisa ser executado em caixas remotas e escrevo código na máquina local. Encontrei uma boa ferramenta que você pode usar para monitorar continuamente suas pastas locais e sincronizá-las com a pasta remota ou local: https://github.com/axkibe/lsyncd
Um comando simples para sincronizar continuamente um diretório local com a máquina remota sobre ssh será:
Assim como com qualquer outro comando rsync, verifique o caminho da pasta corretamente e verifique antes de executar o comando. Quase matei uma máquina remota porque perdi para fornecer um diretório de destino correto. Certifique-se de não perder o caminho remoto e não use '/', a menos que saiba o que está fazendo.
fonte
Se você precisar observar o sistema de arquivos, inotify é a maneira de fazê-lo. Eu escreveria um script python simples usando o pyinotify para executar a sincronização quando o sistema de arquivos for alterado. Veja a documentação . Você também pode verificar o autosync.py para obter alguma inspiração. Diverta-se.
fonte
O que eu fiz uma vez é ter um script bash rodando
ls -l
em loop (com um pouco de sono) e comparando com a saída anterior. Se ele mudou, faça sua sincronização.Inicie esse script em um novo terminal com os nomes de arquivo como argumentos (depois de colocar sua ferramenta de sincronização).
(Usei isso para iniciar uma compilação, não para sincronizar, mas isso funcionaria da mesma maneira.)
fonte
Abordagem muito mais simples:
Exporte seu / var / www com samba (ou nfs) e trabalhe nos arquivos diretamente no servidor.
Outra solução: a maioria dos IDEs permite várias configurações de implantação - verifique se há alguma que seja adequada a você.
Ou defina um sistema de gerenciamento de código-fonte como Git, Bazaar etc.
Boa sorte !!
fonte