Como sincronizar duas instâncias de uma máquina virtual para serem usadas em computadores diferentes?

8

Estou usando o VirtualBox na minha área de trabalho há um bom tempo. Tendo comprado recentemente um notebook, quero poder levar minha máquina virtual Ubuntu comigo e fazer com que as alterações que faço no notebook sejam propagadas para a área de trabalho e vice-versa, quando chegar / sair de casa. O sistema operacional host é o Windows 7 nos dois computadores, executando o VirtualBox 4.

Meu primeiro pensamento foi sincronizar os arquivos do disco virtual. Minha ferramenta de escolha seria rsync, mais especificamente, a versão do Cygwin, usando a --inplaceopção de reduzir ao máximo as gravações. Mas isso seria inviável: me impediria de trabalhar separadamente nas VMs, porque rsyncnão teria como detectar conflitos e mesclá-los adequadamente sem o conhecimento dos sistemas de arquivos que estão dentro dos contêineres.

A próxima opção seria incluir rsyncas máquinas em execução. Isso funcionaria sem atrapalhar o gerenciamento de pacotes? Eu precisaria fazer algo manualmente além de atualizações como novo kernel ou drivers? Existe alguma outra solução que poderia funcionar melhor?

danielkza
fonte
Eu acho que você deveria dividir essa pergunta em duas. Primeiro pergunte sobre o espelhamento de servidor. Então, quando você (espero) tiver algumas respostas, pergunte como implementá-las em uma VM.
N
outra possibilidade seria ter uma única instância da VM no notebook e acessá-la remotamente do sistema principal quando estiver em casa.
Journeyman Geek
Você precisaria sincronizar apenas o software e os documentos - e não as VMs inteiras - pois não é possível ter duas máquinas na rede com os mesmos endereços MAC e nomes de host. Isso causaria confusão.
Paradroid
@ Journeyman Geek: Eu não tinha pensado nisso, poderia realmente funcionar, mas seria um pouco mais lento, considerando que o disco rígido do meu notebook rasteja em comparação com o SSD da minha área de trabalho.
Danielkza
1
Existe um motivo para você não executar a VM em uma unidade externa e movê-la de sistema para sistema?
31712 Dave

Respostas:

2

Usar rsyncpara operações bidirecionais é difícil; Eu sugiro que você olhe unisoncomo uma alternativa. Ele funcionará nos dois sentidos e informará o que será feito antes de fazê-lo, além de detectar arquivos manipulados simultaneamente nos dois lados.

A execução da sincronização fora da VM terá os problemas que você descreve. Os resultados quando executados dentro da VM dependerão muito do que você sincronizar.

  • Sincronizar seu diretório pessoal não deve ser problema e deve sincronizar a maior parte do seu trabalho diário, presumo.
  • A sincronização de dados do gerenciador de pacotes só fará sentido se você fizer uma sincronização completa de quase tudo, talvez com algumas exceções bem consideradas. Em uma sincronização bidirecional, isso quase sempre leva a um conflito; portanto, eu aconselho isso apenas para uma abordagem no estilo rsync.
  • A sincronização /etce a sua casa devem sincronizar a maioria dos dados de configuração e ainda ter pouco impacto no que o gerenciador de pacotes faz. Mas se você instalar algum software em uma VM, precisará instalá-lo manualmente na outra também e provavelmente só deverá sincronizar depois de fazer isso, caso a atualização altere algum arquivo de configuração.
MvG
fonte
1

Considere não tentar "sincronizar" a máquina virtual.

Pense nisso: você não "sincroniza" sua área de trabalho e notebook dessa maneira. Você os trata como máquinas separadas e utiliza serviços como Dropbox, Google Apps etc. ou até um pendrive para trabalhar com seus arquivos. Da mesma forma, trate as duas VMs do Ubuntu como computadores separados e use serviços como o Ubuntu One e os anteriores para manter seus arquivos importantes sincronizados.

Se você estiver preocupado em manter o software instalado sincronizado, poderá usar

dpkg --list-selections

para obter uma lista do software que você instalou especificamente em uma máquina e, em seguida, instale o mesmo software na outra.

Michael Hampton
fonte