rclone.
Precondiciones
- Lea la política de soporte de almacenamiento y las notas de la versión de ambos proveedores.
- Confirme que la versión usa el outbox de eliminación durable independiente del proveedor. La brecha histórica de eliminación solo de MinIO está corregida; no arrastre esa limitación obsoleta a un diseño nuevo.
- Confirme la capacidad, el cifrado, el versionado, la retención, el ciclo de vida, el tamaño de objeto, los metadatos y el comportamiento de nomenclatura del destino.
- Cree identidades de migración de lectura en el origen y escritura en el destino con mínimo privilegio.
- Configure la confianza TLS; nunca use
--no-check-certificate. - Tome y pruebe una copia de seguridad de consistencia de PostgreSQL y del almacenamiento de origen.
- Registre el recuento de objetos, el total de bytes, las versiones/instantáneas de origen y la configuración.
- Establezca una ventana de cambio que permita la detención de escrituras y la reversión.
source:casebender y
destination:casebender. Mantenga la configuración y los registros de
rclone fuera del repositorio y protéjalos como sensibles.
1. Inventario y dry run
sync para la
copia inicial porque puede eliminar objetos del destino.
2. Copia semilla mientras la aplicación está en línea
3. Detenga las escrituras y capture el punto de consistencia
Bloquee las escrituras de usuario e integración usando el procedimiento de mantenimiento de la versión. Pause la ingestión y los workers solo después de que la cola se haya drenado o se haya retenido de forma durable. Registre la marca de tiempo/LSN de la base de datos, la versión/instantánea del bucket de origen y las réplicas de la implementación. Verifique que no se estén produciendo escrituras de almacenamiento. Ejecute el delta final:4. Verifique antes de la conmutación
rclone check --download calcula el hash del contenido descargado y
evita la ambigüedad de ETag del proveedor. Exija cero objetos
faltantes, cambiados o ilegibles. Investigue las diferencias de
recuento procedentes de objetos marcadores del proveedor o de sidecars
locales .meta.json; no dispense las diferencias sin una explicación
registrada.
Ejecute la prueba de contrato del destino desde la red de la
aplicación:
5. Conmutación
- Guarde la configuración del proveedor anterior y la versión de recurso del Secret en el registro de cambio cifrado.
- Confirme que las entradas de
StorageMigrationLedgerestánVERIFIED. El procesador de migración copia primero, lee de vuelta, verifica SHA-256, registra la versión del proveedor de destino y solo entonces transita aCUTOVER. - Cambie solo los perfiles de proveedor explícitos y las credenciales. Preserve el contenido de los buckets y las claves durables.
- Reinicie la aplicación web y espere
/api/health/ready. - Ejecute pruebas de carga/descarga/list/copy/delete de la aplicación y verifique SHA-256.
- Verifique adjuntos y evidencia existentes de varias antigüedades y tamaños.
- Reanude los workers y la ingestión, y después las escrituras de usuario.
- Supervise de forma continua los errores de almacenamiento, las eliminaciones fallidas, la latencia, la limitación, la profundidad de cola y los eventos de auditoría durante la ventana de reversión.
6. Reversión
La reversión es segura solo mientras se retenga el origen anterior y las escrituras nuevas puedan reconciliarse.- Vuelva a entrar en modo de mantenimiento y detenga las escrituras.
- Registre todos los objetos escritos en el destino desde la conmutación.
- Copie el delta inverso al origen sin eliminación:
- Exija una comprobación limpia y, a continuación, restaure la configuración del proveedor anterior y la versión de la credencial.
- Reinicie, ejecute pruebas de ciclo de vida/integridad de la aplicación y reanude el tráfico.
- Conserve ambos almacenes y toda la evidencia hasta que se complete la revisión del incidente/cambio.
7. Cierre
- Reconcilie los recuentos/bytes finales y archive hashes, registros, versiones de herramientas, aprobaciones, versiones de configuración y resultados de aplicación muestreados.
- Rote las credenciales temporales de migración.
- Mantenga el origen en solo lectura durante el período de reversión aprobado.
- Tras la firma formal y la revisión legal/de retención, elimine los datos de origen usando el proceso de eliminación auditado del proveedor.
- Actualice el registro de soporte con el producto/versión del proveedor, los detalles de TLS/CA, el resultado del contrato, el resultado de rendimiento, el resultado de la copia de seguridad y el ejercicio de reversión.
Advertencias específicas del proveedor
- S3/Ceph RGW: preserve los ID de versión y los delete markers; las copias ordinarias pueden no retener el estado de Object Lock/retención legal. Recualifique la versión exacta del producto y la CA privada.
- GCS: preserve las generaciones numéricas; la retención del bucket, la retención de objetos, las retenciones basadas en eventos y la política CMEK necesitan atestación separada en el destino.
- Azure: preserve los ID de versión de blob; la inmutabilidad y la retención legal son específicas del destino y los blobs copiados reciben ID de versión nuevos.
- MinIO heredado: conserve tanto la instantánea original del volumen como la exportación de la API S3. Nunca importe el diseño interno del sistema de archivos de MinIO a otro proveedor.