rclone.
Precondizioni
- Leggi la policy di supporto dello storage e le note di release per entrambi i provider.
- Conferma che la release usi l’outbox di eliminazione persistente neutrale rispetto al provider. Il gap storico di eliminazione solo-MinIO è corretto; non portare quella limitazione obsoleta in un nuovo progetto.
- Conferma capacità, crittografia, versioning, retention, ciclo di vita, dimensione degli oggetti, metadata e comportamento dei nomi della destinazione.
- Crea identità di migrazione least-privilege in lettura sulla sorgente e in scrittura sulla destinazione.
- Configura il trust TLS; non usare mai
--no-check-certificate. - Esegui e testa un backup di consistenza di PostgreSQL e dello storage sorgente.
- Registra conteggio oggetti, byte totali, versioni/snapshot della sorgente e configurazione.
- Imposta una finestra di modifica che consenta la quiescenza delle write e il rollback.
source:casebender e destination:casebender. Conserva la configurazione
rclone e i log al di fuori del repository e proteggili come sensibili.
1. Inventory e dry run
sync per la copia iniziale perché può eliminare oggetti
nella destinazione.
2. Copia seed mentre l’applicazione è online
3. Metti in quiescenza le write e acquisisci il punto di consistenza
Blocca le write di utenti e integrazioni usando la procedura di manutenzione della release. Metti in pausa ingestion e worker solo dopo che la coda è stata svuotata o conservata in modo persistente. Registra il timestamp/LSN del database, la versione/snapshot del bucket sorgente e le repliche del deployment. Verifica che non stiano avvenendo write di storage. Esegui il delta finale:4. Verifica prima del cutover
rclone check --download calcola l’hash del contenuto scaricato ed evita l’ambiguità
degli ETag del provider. Richiedi zero oggetti mancanti, modificati o illeggibili. Indaga
le differenze di conteggio da oggetti marker del provider o sidecar .meta.json local;
non rinunciare alle differenze senza una spiegazione registrata.
Esegui il contract test della destinazione dalla rete dell’applicazione:
5. Cutover
- Salva la configurazione del vecchio provider e la versione della risorsa Secret nel record di modifica crittografato.
- Conferma che le voci
StorageMigrationLedgersianoVERIFIED. Il processore di migrazione copia prima, rilegge, verifica SHA-256, registra la versione del provider di destinazione e solo allora transita aCUTOVER. - Modifica solo i profili provider espliciti e le credenziali. Conserva i contenuti del bucket e le chiavi persistenti.
- Riavvia l’applicazione web e attendi
/api/health/ready. - Esegui i test applicativi upload/download/list/copy/delete e verifica SHA-256.
- Verifica allegati ed evidenze esistenti su diverse età e dimensioni.
- Riprendi worker e ingestion, quindi le write utente.
- Monitora errori di storage, delete fallite, latenza, throttling, profondità della coda ed eventi di audit in modo continuo per tutta la finestra di rollback.
6. Rollback
Il rollback è sicuro solo mentre la vecchia sorgente è conservata e le nuove write possono essere riconciliate.- Ri-entra in modalità manutenzione e metti in quiescenza le write.
- Registra tutti gli oggetti scritti nella destinazione dal cutover.
- Copia il delta inverso verso la sorgente senza eliminazione:
- Richiedi un check pulito, quindi ripristina la configurazione del provider precedente e la versione delle credenziali.
- Riavvia, esegui i test di ciclo di vita/integrità dell’applicazione e riprendi il traffico.
- Conserva entrambi gli store e tutte le evidenze fino al completamento della revisione di incidente/modifica.
7. Chiusura
- Riconcilia i conteggi/byte finali e archivia hash, log, versioni degli strumenti, approvazioni, versioni di configurazione e risultati applicativi campionati.
- Ruota le credenziali temporanee di migrazione.
- Mantieni la sorgente in sola lettura per il periodo di rollback approvato.
- Dopo il sign-off formale e la revisione legal/retention, rimuovi i dati della sorgente usando il processo di smaltimento auditato del provider.
- Aggiorna il record di supporto con prodotto/versione del provider, dettagli TLS/CA, risultato del contratto, risultato delle prestazioni, risultato del backup ed esercizio di rollback.
Avvertenze specifiche del provider
- S3/Ceph RGW: preserva gli ID di versione e i delete marker; le copie ordinarie potrebbero non conservare lo stato Object Lock/legal-hold. Riqualifica la versione esatta del prodotto e la CA privata.
- GCS: preserva le generation numeriche; bucket retention, object retention, hold basati su eventi e policy CMEK necessitano di un’attestazione separata della destinazione.
- Azure: preserva gli ID di versione dei blob; immutabilità e legal hold sono specifici della destinazione e i blob copiati ricevono nuovi ID di versione.
- MinIO legacy: conserva sia lo snapshot originale del volume sia l’export API S3. Non importare mai il layout interno del filesystem di MinIO in un altro provider.