rclone.
Préconditions
- Lisez la politique de support du stockage et les notes de version des deux fournisseurs.
- Confirmez que la version utilise l’outbox de suppression durable neutre vis-à-vis du fournisseur. L’écart historique de suppression MinIO-only est corrigé ; n’emportez pas cette limitation obsolète dans une nouvelle conception.
- Confirmez la capacité, le chiffrement, le versioning, la rétention, le cycle de vie, la taille d’objet, les métadonnées et le comportement de nommage de la destination.
- Créez des identités de migration en moindre privilège lecture-source et écriture-destination.
- Configurez la confiance TLS ; n’utilisez jamais
--no-check-certificate. - Prenez et testez une sauvegarde de cohérence de PostgreSQL et du stockage source.
- Enregistrez le nombre d’objets, le total d’octets, les versions/instantanés source et la configuration.
- Définissez une fenêtre de changement qui permet la mise au repos des écritures et le rollback.
source:casebender et
destination:casebender. Conservez la configuration et les journaux rclone
hors du dépôt et protégez-les comme sensibles.
1. Inventaire et essai à blanc
sync pour la
copie initiale car il peut supprimer des objets de destination.
2. Copie d’amorçage pendant que l’application est en ligne
3. Mettre les écritures au repos et capturer le point de cohérence
Bloquez les écritures utilisateur et d’intégration via la procédure de maintenance de la version. Mettez en pause l’ingestion et les workers uniquement après que la file est vidée ou conservée de façon durable. Enregistrez l’horodatage/LSN de la base de données, la version/instantané du bucket source et les réplicas de déploiement. Vérifiez qu’aucune écriture de stockage n’a lieu. Exécutez le delta final :4. Vérifier avant la bascule
rclone check --download hache le contenu téléchargé et évite
l’ambiguïté des ETags fournisseur. Exigez zéro objet manquant, modifié ou
illisible. Examinez les différences de comptage dues aux objets
marqueurs du fournisseur ou aux sidecars locaux .meta.json ; ne
dispensez pas les différences sans explication enregistrée.
Exécutez le test de contrat de destination depuis le réseau de
l’application :
5. Basculer
- Enregistrez l’ancienne configuration du fournisseur et la version de ressource Secret dans l’enregistrement de changement chiffré.
- Confirmez que les entrées
StorageMigrationLedgersontVERIFIED. Le processeur de migration copie d’abord, relit, vérifie le SHA-256, enregistre la version fournisseur de destination, puis seulement bascule versCUTOVER. - Modifiez uniquement les profils de fournisseur explicites et les identifiants. Préservez le contenu des buckets et les clés durables.
- Redémarrez l’application web et attendez
/api/health/ready. - Exécutez les tests applicatifs téléversement/téléchargement/listage/copie/suppression et vérifiez le SHA-256.
- Vérifiez les pièces jointes et preuves existantes sur plusieurs âges et tailles.
- Reprenez les workers et l’ingestion, puis les écritures utilisateur.
- Surveillez en continu les erreurs de stockage, les suppressions en échec, la latence, la limitation, la profondeur de file et les événements d’audit pendant la fenêtre de rollback.
6. Rollback
Le rollback n’est sûr que tant que l’ancienne source est conservée et que les nouvelles écritures peuvent être réconciliées.- Réentrez en mode maintenance et mettez les écritures au repos.
- Enregistrez tous les objets écrits vers la destination depuis la bascule.
- Copiez le delta inverse vers la source sans suppression :
- Exigez une vérification propre, puis restaurez la configuration de fournisseur et la version d’identifiants précédentes.
- Redémarrez, exécutez les tests de cycle de vie/intégrité applicatifs et reprenez le trafic.
- Conservez les deux magasins et toutes les preuves jusqu’à la fin de la revue d’incident/changement.
7. Clôture
- Réconciliez les comptages/octets finaux et archivez les hachages, les journaux, les versions d’outils, les approbations, les versions de configuration et les résultats applicatifs échantillonnés.
- Effectuez la rotation des identifiants de migration temporaires.
- Conservez la source en lecture seule pendant la période de rollback approuvée.
- Après signature formelle et revue légale/rétention, supprimez les données source via le processus d’élimination audité du fournisseur.
- Mettez à jour l’enregistrement de support avec le produit/la version du fournisseur, les détails TLS/CA, le résultat de contrat, le résultat de performance, le résultat de sauvegarde et l’exercice de rollback.
Mises en garde spécifiques aux fournisseurs
- S3/Ceph RGW : préservez les ID de version et les marqueurs de suppression ; les copies ordinaires peuvent ne pas conserver l’état Object Lock/conservation légale. Requalifiez la version produit exacte et la CA privée.
- GCS : préservez les générations numériques ; la rétention de bucket, la rétention d’objet, les conservations événementielles et la politique CMEK nécessitent une attestation de destination séparée.
- Azure : préservez les ID de version de blob ; l’immuabilité et la conservation légale sont spécifiques à la destination et les blobs copiés reçoivent de nouveaux ID de version.
- MinIO héritage : conservez à la fois l’instantané de volume d’origine et l’export API S3. N’importez jamais la disposition interne du système de fichiers MinIO dans un autre fournisseur.