A utilização de rsync
revelou-se mais problemática do que eu pensava inicialmente:
- O comando precisa ser executado como root na máquina remota.
- Eu não não habilitei o login raiz remoto.
- O sistema de arquivos é baseado no LVM e foi um incômodo montar a partição raiz real da VM dentro do LVM no arquivo VDI.
Por essas razões, acabei com um processo de duas etapas:
- Copie todos os arquivos da máquina remota para a máquina host local.
- Copie os arquivos para o convidado.
Eu finalmente fui com o básico tar
, embora eu pudesse ter usado rdiffdir
fornecido por duplicity
para economizar alguma largura de banda.
Eu comecei configurando um túnel SSH que eu poderia usar para encapsular os arquivos tar
para que eu não tivesse que gravar o arquivo no sistema de arquivos que eu estava copiando.
local$ ssh user@remote -R 3000:localhost:3000
loacl$ nc -l 3000 > filesystem.tar.gz
remote$ sudo tar -vcz / --exclude={/dev,/proc,/sys,/tmp} | nc localhost 3000
Isso criou um arquivo tar de todo o sistema de arquivos em minha máquina host local. O próximo passo foi descompactá-lo no convidado:
guest$ cd /
guest$ nc -l 3000 | sudo tar -xvz
local$ nc guest_ip 3000 < filesystem.tar.gz
No meu caso /etc/fstab
referenciou sistemas de arquivos por seus UUIDs, então tive que atualizá-lo com a saída de guest$ sudo blkid
. Eu também tive que atualizar as configurações de rede em /etc/udev/rules.d/70-persistent-net.rules
(nomes de interface) e /etc/network/interfaces
(endereços IP).