Alguém pode sugerir uma maneira de copiar dados do host de uma máquina virtual para a VM [0] de maneira cruzada entre os hosts (por exemplo, Windows, Mac ou Linux)? Agora, estou conseguindo isso executando o rsync na VM em um loop, o que obviamente não é ótimo.
Em um nível alto, estou fornecendo um ambiente de criação / teste consistente para desenvolvedores que usam ambientes de desenvolvimento altamente inconsistentes. Quando um desenvolvedor clona a base de código, uma VM é lançada em segundo plano para executar compilações e testes incrementais contínuos à medida que editam o código na máquina host.
Minha implementação atual tem a VM montar uma pasta sincronizada contendo o código-fonte como somente leitura. Eu não quero que a VM escreva nada no sistema de arquivos do host, pois isso pode interferir em compilações manuais ou testes executados pelos desenvolvedores. Então, eu tenho a VM copiar o conteúdo do diretório de origem para um sistema de arquivos somente para convidados [1].
Estou realizando esta cópia executando um script bash eterno para rsync o conteúdo a cada três segundos.
while true
do
sleep 3
rsync -av --exclude '.git' --exclude-from $MOUNTDIR/.gitignore $MOUNTDIR/ $BUILDDIR/
done
Obviamente, isso não é ideal.
Procurei usar vários observadores de sistemas de arquivos (baseados em inotify ou kqueue), mas eles estão todos ligados a um tipo específico de sistema de arquivos (NTFS, ext3 / 4, HFS +).
Existe alguma maneira multiplataforma de observar mudanças no sistema de arquivos? Alguma abstração sobre os serviços de notificação por push específicos do sistema de arquivos ou um sistema de pesquisa agnóstico de plataforma?
Existe tal coisa em qualquer biblioteca ou ferramenta existente? Ou há algum padrão comum que estou perdendo aqui?
[0] Hypervisor do Virtualbox, fornecido pelo Vagrant, rodando o Ubuntu, mas sou flexível em todas essas dependências.
[1] Eu tentei fazer isso criando links simbólicos para a pasta montada, mas nosso sistema de compilação, gulp
, resolveria links simbólicos que causam dor