Tutoriel Linux

Restic : ripristinare un file senza sovrascrivere la versione attuale

Débutant4 min de lecture

Un file di configurazione cancellato o sostituito troppo rapidamente può riportare un servizio in uno stato indesiderato. Con Restic, il rischio consiste nel ripristinare direttamente nel percorso attivo. Recupera prima il file in una directory di test, poi confrontalo prima di qualsiasi copia.

Il metodo parte da un deposito già inizializzato e accessibile con le credenziali abituali. Mira a un file specifico, ad esempio /etc/il-mio-servizio/config.ini, e lascia intatta la versione attualmente utilizzata fino a quando il controllo non è completato.

File ripristinato da un archivio sicuro a una directory di test separata
Il ripristino in una directory separata consente di confrontare il file prima di modificare la versione attiva.

Identificare lo snapshot e il percorso da recuperare

Definisci il deposito con le stesse variabili o lo stesso file di ambiente della tua copia di sicurezza. Evita di incollare la password del deposito nella cronologia Bash. Se il servizio Restic è già in esecuzione in uno script o in un’unità systemd, utilizza il suo meccanismo di autenticazione invece di crearne uno nuovo per il ripristino.

Inizia elencando gli snapshot che contengono il percorso cercato:

export RESTIC_REPOSITORY=/srv/restic-repo
restic snapshots --path /etc/il-mio-servizio/config.ini

L’output mostra gli identificativi, la data, l’host e i percorsi salvati. Scegli un identificativo specifico piuttosto che latest se più macchine o più copie di sicurezza possono contenere questo file. In questo esempio, sostituisci 8f3a1c2d con l’identificativo scelto.

SNAPSHOT=8f3a1c2d
restic ls "$SNAPSHOT" --path /etc/il-mio-servizio/config.ini

restic ls conferma il percorso presente nell’archivio prima di scrivere qualsiasi cosa. Se nessun risultato corrisponde, fermati lì. Un percorso errato o uno snapshot preso dopo l’incidente non sarà riparato da un secondo ripristino.

Ripristinare in una directory di test

Crea una directory riservata al controllo. Non deve essere un punto di montaggio di produzione né la cartella del servizio interessato:

sudo install -d -m 0700 /srv/restore-restic-test
restic restore "$SNAPSHOT" 
  --target /srv/restore-restic-test 
  --include /etc/il-mio-servizio/config.ini

Restic ricrea l’alberatura sotto la destinazione. Il file ripristinato si trova quindi qui:

/srv/restore-restic-test/etc/il-mio-servizio/config.ini

Questa directory separata evita di sovrascrivere /etc/il-mio-servizio/config.ini durante il test. È la scelta da mantenere per un file di servizio, una chiave di configurazione o un database esportato. Un ripristino diretto nella radice trasforma un errore di snapshot in un incidente di produzione.

Confrontare il file prima di reinserirlo in servizio

Controlla prima i diritti, la dimensione e le differenze. Il comando diff non modifica alcun file:

sudo stat /etc/il-mio-servizio/config.ini
sudo stat /srv/restore-restic-test/etc/il-mio-servizio/config.ini
sudo diff -u 
  /etc/il-mio-servizio/config.ini 
  /srv/restore-restic-test/etc/il-mio-servizio/config.ini

Un diff senza output restituisce il codice 0: i due contenuti sono identici. Se mostra righe eliminate e aggiunte, leggile prima di decidere. Un vecchio indirizzo, una porta o un segreto scaduto possono essere esattamente il motivo per cui il file è cambiato.

Quando la copia ripristinata è quella giusta, esegui prima una copia di backup della versione attiva, poi sostituiscila in una breve finestra di manutenzione. Controlla quindi la sintassi e lo stato del servizio con i comandi adatti al tuo software, ad esempio systemctl status il-mio-servizio e il registro associato.

Il controllo del ripristino merita la stessa attenzione di un backup. La guida BorgBackup applica la stessa logica con un’estrazione fuori produzione. Per trovare un percorso prima di lanciare Restic, il comando find su Linux evita di ripristinare un file omonimo nella posizione sbagliata.

Quando non ripristinare un solo file

Un file isolato è sufficiente per una configurazione cancellata o una versione sovrascritta. Non è sempre sufficiente per un’applicazione che distribuisce il suo stato tra un database, file e un registro delle transazioni. In questo caso, ripristina un insieme coerente in una VM o in una directory isolata, poi valida la procedura con il servizio fermo o una copia di test.

La documentazione Restic sul ripristino descrive il targeting per snapshot, percorso e directory di destinazione. Tieni la directory di test fino alla verifica finale. La sua cancellazione dopo la validazione non influisce sul deposito Restic né sul file attivo.

sudo apt update && sudo apt upgrade