Guida alla migrazione

Migrare in sicurezza i dati di un VPS con rsync

Usa rsync per predisporre una copia dei normali dati del filesystem dal VPS sorgente alla destinazione tramite SSH; interrompi poi brevemente le scritture, esegui la sincronizzazione finale, convalida l’applicazione e sposta il traffico mantenendo una procedura di rollback. Rsync non è uno strumento universale di migrazione a caldo: database, container, file di avvio, dispositivi, segreti e code attive richiedono procedure specifiche per l’applicazione.

Dati principali

Trasporto
Rsync su SSH autenticato
Prima attività
Censire i dati ed eseguire una simulazione
Coerenza
Fermare o sospendere le scritture per il passaggio finale
Impostazione sicura
Non usare `--delete` nella prima migrazione

Censire prima di copiare

Elenca file applicativi, proprietà, ACL, attributi estesi, database, segreti, attività pianificate, servizi, regole firewall, DNS, certificati e storage esterno. Conferma capacità sufficiente sulla destinazione e compatibilità di utenti, filesystem, pacchetti del sistema operativo e versioni applicative. Riduci il TTL DNS prima del passaggio solo se coerente con il piano DNS; i record in cache possono comunque durare più del previsto.

Crea e verifica un backup indipendente della sorgente. Mantienila invariata e disponibile durante il trasferimento iniziale. Definisci i controlli di successo e la decisione di rollback prima di annunciare la finestra di manutenzione.

  • Non copiare come dati ordinari filesystem virtuali quali /proc, /sys, /dev o /run.
  • Quando opportuno usa strumenti nativi di backup, replica o dump del database.
  • Non inserire mai chiavi private nella cronologia dei comandi o in note condivise.

Predisporre i dati applicativi con una simulazione

Per una directory come /srv/app/, prova dalla sorgente con sudo rsync -aHAX --numeric-ids --info=progress2 --dry-run -e "ssh -i /root/.ssh/migration_key" /srv/app/ admin@DESTINATION:/srv/app/. Sostituisci utente, percorso della chiave, destinazione e percorsi dei dati. La barra finale indica di copiare il contenuto della directory sorgente, senza creare un ulteriore livello.

Esamina ogni percorso ed errore. Verifica che l’account remoto possa scrivere in sicurezza sulla destinazione; l’accesso root non è necessario ed è spesso disabilitato. Quando la simulazione è corretta, ripeti senza --dry-run. Non aggiungere --delete solo per rendere identiche le directory: un errore nei percorsi potrebbe cancellare dati preziosi.

  • Per grandi trasferimenti esegui il comando in una sessione terminale persistente.
  • Limita la banda se la copia può influire sul traffico di produzione.
  • Registra opzioni del comando e versioni degli strumenti.

Sospendere le scritture ed eseguire il passaggio finale

Porta l’applicazione in uno stato di manutenzione o sola lettura documentato. Ferma gli esatti servizi di scrittura con la procedura supportata, quindi esegui il backup finale del database o completa la replica. Ripeti lo stesso comando rsync, trasferendo soltanto i file cambiati. Mantieni la manutenzione fino al completamento della convalida.

Avvia i servizi sulla destinazione con la configurazione prevista, limitando inizialmente l’accesso pubblico se possibile. Controlla stato, accesso, scrittura, code, certificati, log e dipendenze. Aggiorna DNS o routing soltanto dopo il superamento delle prove. Non cambiare nella stessa finestra versione dell’applicazione e località di hosting, salvo accettare espressamente il rischio combinato.

  • Registra l’ora di arresto delle scritture e il risultato finale.
  • Convalida proprietà dei file e controlli di accesso obbligatori.
  • Sorveglia endpoint vecchio e nuovo durante la transizione DNS.

Verificare, osservare e conservare il rollback

Per un confronto più approfondito, esegui il comando rsync originale con --checksum --dry-run in una finestra adatta; il calcolo legge entrambi gli insiemi e può essere oneroso. Per database e object storage preferisci controlli di integrità applicativi. Dopo il passaggio monitora errori, latenza, risorse, attività in background e callback esterni.

Mantieni intatta la sorgente ma impedisci scritture concorrenti finché termina la finestra di rollback. Segui poi il piano di conservazione e cancellazione sicura. La migrazione è completa solo quando backup, monitoraggio, documentazione e recupero fanno riferimento alla destinazione.

Fonti

  1. Pagina di manuale ufficiale di rsync
Domande frequenti

Domande frequenti

Rsync può copiare in sicurezza un database in esecuzione?

La copia dei file di un database attivo può risultare incoerente. Usa dump, backup, coordinamento degli snapshot o replica supportati dal database.

Devo usare `--delete`?

Non nella migrazione iniziale. Se serve in seguito, esegui prima --delete --dry-run, verifica entrambi i percorsi e mantieni un backup recuperabile.

Perché sono cambiati i permessi?

L’utente di destinazione può non avere privilegi, gli ID numerici possono differire o il filesystem può non supportare le stesse ACL e proprietà. Verifica la compatibilità prima del passaggio.