rclone.
Pré-condições
- Leia a política de suporte de armazenamento e as notas da release de ambos os provedores.
- Confirme que a release usa o outbox de exclusão durável, independente de provedor. A lacuna histórica de exclusão exclusiva do MinIO está corrigida; não carregue essa limitação obsoleta para um novo projeto.
- Confirme capacidade, criptografia, versionamento, retenção, ciclo de vida, tamanho de objeto, metadados e comportamento de nomenclatura do destino.
- Crie identidades de migração de leitura na origem e de escrita no destino com menor privilégio.
- Configure a confiança TLS; nunca use
--no-check-certificate. - Faça e teste um backup de consistência do PostgreSQL e do armazenamento de origem.
- Registre a contagem de objetos, o total de bytes, as versões/snapshots de origem e a configuração.
- Defina uma janela de mudança que permita silenciar escritas e fazer rollback.
source:casebender e destination:casebender. Mantenha a
configuração e os logs do rclone fora do repositório e proteja-os como sensíveis.
1. Inventário e dry run
sync para a cópia inicial porque ele pode excluir objetos
do destino.
2. Cópia-semente enquanto a aplicação está online
3. Silencie as escritas e capture o ponto de consistência
Bloqueie escritas de usuário e de integração usando o procedimento de manutenção da release. Pause ingestão e workers somente após a fila ser drenada ou retida de forma durável. Registre o timestamp/LSN do banco de dados, a versão/snapshot do bucket de origem e as réplicas da implantação. Verifique se nenhuma escrita de armazenamento está ocorrendo. Execute o delta final:4. Verifique antes da transição
rclone check --download calcula o hash do conteúdo baixado e evita a
ambiguidade de ETag do provedor. Exija zero objetos ausentes, alterados ou ilegíveis. Investigue
diferenças de contagem provenientes de objetos marcadores do provedor ou sidecars locais .meta.json;
não ignore diferenças sem uma explicação registrada.
Execute o teste de contrato do destino a partir da rede da aplicação:
5. Transição
- Salve a configuração antiga do provedor e a versão de recurso do Secret no registro criptografado da mudança.
- Confirme que as entradas de
StorageMigrationLedgerestãoVERIFIED. O processador de migração copia primeiro, relê, verifica o SHA-256, registra a versão do provedor de destino e só então transita paraCUTOVER. - Altere somente os perfis explícitos do provedor e as credenciais. Preserve o conteúdo do bucket e as chaves duráveis.
- Reinicie a aplicação web e aguarde
/api/health/ready. - Execute testes de upload/download/list/copy/delete da aplicação e verifique o SHA-256.
- Verifique anexos e evidências existentes em várias idades e tamanhos.
- Retome workers e ingestão e, em seguida, as escritas de usuário.
- Monitore erros de armazenamento, exclusões com falha, latência, throttling, profundidade de fila e eventos de auditoria continuamente durante a janela de rollback.
6. Rollback
O rollback é seguro somente enquanto a origem antiga for retida e as novas escritas puderem ser reconciliadas.- Reentre no modo de manutenção e silencie as escritas.
- Registre todos os objetos gravados no destino desde a transição.
- Copie o delta reverso para a origem sem exclusão:
- Exija uma verificação limpa e, em seguida, restaure a configuração anterior do provedor e a versão da credencial.
- Reinicie, execute testes de ciclo de vida/integridade da aplicação e retome o tráfego.
- Mantenha ambos os stores e toda a evidência até a conclusão da revisão de incidente/mudança.
7. Encerramento
- Reconcilie as contagens/bytes finais e arquive hashes, logs, versões de ferramentas, aprovações, versões de configuração e resultados amostrados da aplicação.
- Rotacione as credenciais temporárias de migração.
- Mantenha a origem somente leitura pelo período aprovado de rollback.
- Após o aceite formal e a revisão jurídica/de retenção, remova os dados de origem usando o processo auditado de descarte do provedor.
- Atualize o registro de suporte com produto/versão do provedor, detalhes de TLS/CA, resultado do contrato, resultado de desempenho, resultado de backup e exercício de rollback.
Ressalvas específicas de provedor
- S3/Ceph RGW: preserve IDs de versão e delete markers; cópias ordinárias podem não reter o estado de Object Lock/legal-hold. Requalifique a versão exata do produto e a CA privada.
- GCS: preserve gerações numéricas; retenção de bucket, retenção de objeto, holds baseados em evento e política CMEK exigem atestação separada no destino.
- Azure: preserve IDs de versão de blob; imutabilidade e legal hold são específicos do destino e blobs copiados recebem novos IDs de versão.
- MinIO legado: mantenha tanto o snapshot original do volume quanto a exportação pela API S3. Nunca importe o layout interno do sistema de arquivos do MinIO para outro provedor.