Guia de migração

Migre dados de um VPS em segurança com rsync

Utilize rsync através de SSH para copiar por fases os dados comuns do sistema de ficheiros de um VPS de origem para um destino. Interrompa depois brevemente as escritas, execute uma sincronização final, valide a aplicação e encaminhe o tráfego, mantendo uma forma de reverter. O rsync não é uma ferramenta universal de migração em funcionamento: bases de dados, contentores, ficheiros de arranque, dispositivos, segredos e filas ativas exigem procedimentos próprios da aplicação.

Factos principais

Transporte
Rsync através de SSH autenticado
Primeira ação
Inventariar os dados e executar uma simulação
Coerência
Parar ou suspender os processos de escrita na última passagem
Predefinição segura
Não utilizar `--delete` na primeira migração

Inventariar antes de copiar

Enumere os ficheiros das aplicações, proprietários, ACL, atributos estendidos, bases de dados, segredos, tarefas agendadas, serviços, regras da firewall, DNS, certificados e armazenamento externo. Confirme que o destino tem capacidade suficiente e utilizadores, sistemas de ficheiros, pacotes do sistema operativo e versões das aplicações compatíveis. Reduza antecipadamente o TTL do DNS apenas se essa alteração fizer parte do seu plano; os registos em cache podem persistir mais tempo do que o esperado.

Crie e verifique uma cópia de segurança independente da origem. Mantenha a origem inalterada e disponível durante toda a transferência inicial. Defina as verificações de êxito e o critério de reversão antes de anunciar a janela de manutenção.

  • Não copie sistemas de ficheiros virtuais, como /proc, /sys, /dev ou /run, como se fossem dados comuns.
  • Quando adequado, utilize as ferramentas nativas de cópia de segurança, replicação ou exportação da base de dados.
  • Nunca guarde chaves privadas no histórico de comandos nem em notas partilhadas.

Copiar os dados da aplicação por fases, começando por uma simulação

Para um diretório como /srv/app/, teste a operação a partir da origem com sudo rsync -aHAX --numeric-ids --info=progress2 --dry-run -e "ssh -i /root/.ssh/migration_key" /srv/app/ admin@DESTINATION:/srv/app/. Substitua o utilizador, o caminho da chave, o destino e os caminhos dos dados. A barra final indica que deve copiar o conteúdo do diretório de origem, e não criar mais um nível de diretório.

Analise todos os caminhos e erros. Confirme que a conta remota pode escrever em segurança no destino; o acesso root é desnecessário e está frequentemente desativado. Quando o resultado da simulação estiver correto, repita o comando sem --dry-run. Não acrescente --delete apenas para tornar os diretórios idênticos: um caminho de origem ou destino incorreto pode eliminar dados importantes.

  • Execute o comando numa sessão de terminal persistente para transferências grandes.
  • Limite a largura de banda se a cópia puder afetar o tráfego de produção.
  • Registe as opções do comando e as versões das ferramentas no relatório da migração.

Suspender as escritas e executar a passagem final

Coloque a aplicação num estado documentado de manutenção ou apenas de leitura. Pare os serviços responsáveis pela escrita através dos respetivos procedimentos suportados e crie depois a cópia final da base de dados ou conclua a replicação. Execute novamente o mesmo comando rsync para transferir apenas os ficheiros alterados. Mantenha o estado de manutenção até concluir a validação.

Inicie os serviços no destino com a configuração prevista, restrinja inicialmente o acesso público se possível e execute verificações de estado, autenticação, escrita, filas, certificados, registos e dependências. Atualize o DNS ou o encaminhamento apenas depois de todos os testes passarem. Evite alterar simultaneamente a versão da aplicação e a localização do alojamento na mesma janela, salvo se esse risco combinado tiver sido expressamente aceite.

  • Registe a hora final da interrupção das escritas e o resultado da sincronização.
  • Valide os proprietários dos ficheiros e os controlos de acesso obrigatórios.
  • Monitorize os pontos terminais antigo e novo durante a transição do DNS.

Verificar, observar e conservar a possibilidade de reversão

Para uma comparação mais profunda dos ficheiros, execute o comando rsync original com --checksum --dry-run numa janela adequada; o cálculo das somas de controlo lê os dois conjuntos de dados e pode ser dispendioso. Para bases de dados e armazenamento de objetos, prefira verificações de integridade ao nível da aplicação. Após a transição, monitorize erros, latência, utilização de recursos, tarefas em segundo plano e chamadas externas.

Mantenha a origem intacta, mas impeça escritas simultâneas divergentes até terminar o período de reversão. Aplique depois o plano de conservação e eliminação segura. A migração só termina quando as cópias de segurança, a monitorização, a documentação e os procedimentos de recuperação apontarem para o destino.

Fontes

  1. Página oficial do manual do rsync
Perguntas frequentes

Perguntas frequentes

O rsync consegue copiar em segurança uma base de dados em funcionamento?

Uma cópia de ficheiros de uma base de dados ativa pode ficar incoerente. Utilize o processo suportado pela base de dados para exportação, cópia de segurança, coordenação de instantâneos ou replicação.

Devo utilizar `--delete`?

Não na primeira migração. Se for necessário mais tarde, comece por executar com --delete --dry-run, confirme ambos os caminhos e mantenha uma cópia de segurança recuperável.

Porque mudaram as permissões?

O utilizador no destino pode não ter privilégios suficientes, os identificadores numéricos podem ser diferentes ou o sistema de ficheiros de destino pode não suportar as mesmas ACL ou atributos. Verifique a compatibilidade antes da transição.