In questo capitolo imparerai come eseguire il backup e ripristinare i tuoi dati con Linux.
Obiettivi : In questo capitolo, futuri amministratori Linux impareranno come:
usare i comandi tar e cpio per effettuare un backup; controllare i loro backup e ripristinare i dati; comprimere o decomprimere i loro backup.
backup, ripristino, compressione
Conoscenza: Complessità:
Tempo di lettura: 40 minuti
Nota
In tutto questo capitolo le strutture di comando usano "device" per specificare sia la posizione di destinazione per il backup, sia la posizione di origine durante il ripristino. Il dispositivo può essere un supporto esterno o un file locale. Dovresti sviluppare una certa confidenza con questo concetto durante lo svolgimento del capitolo, ma puoi sempre ritornare a questa nota per chiarimenti se ne hai bisogno.
Il backup risponde a una necessità di conservare e ripristinare i dati in modo sicuro ed efficace.
Il backup consente di proteggersi dai seguenti problemi:
Distruzione: volontaria o involontaria. Umana o tecnica. Virus, ...
Cancellazione: volontaria o involontaria. Umana o tecnica. Virus, ...
Integrità : i dati diventano inutilizzabili.
Nessun sistema è infallibile, nessun umano è infallibile, quindi per evitare di perdere dati, questi devono essere salvati per poi essere in grado di ripristinarli dopo un problema.
Il supporto di backup dovrebbe essere tenuto in un'altra stanza (o edificio) rispetto al server in modo che un disastro non distrugga il server e i backup.
Inoltre, l'amministratore deve controllare regolarmente che i supporti siano ancora leggibili.
Pre-corrente : in un dato momento (prima di un aggiornamento del sistema, ...).
Periodica: Ogni giorno, settimana, mese, ...
Suggerimento
Prima di una modifica del sistema, può essere utile fare un backup. Tuttavia, non ha senso eseguire il backup dei dati ogni giorno se vengono modificati solo ogni mese.
A seconda delle utilità disponibili, sarà possibile eseguire diversi tipi di ripristini.
Ripristino Completo: alberi delle directory, ...
Ripristino Selettivo: parte dell'albero, files, ...
È possibile ripristinare un intero backup ma è anche possibile ripristinarne solo una parte. Tuttavia, quando si ripristina una directory, i file creati dopo il backup non vengono eliminati.
Suggerimento
Per ripristinare una directory come era al momento del backup, è necessario eliminare completamente il suo contenuto prima di avviare il ripristino.
L'uso di una convenzione di denominazione consente di indirizzare rapidamente il contenuto di un file di backup ed evitare così ripristini pericolosi.
nome della directory;
utilità utilizzata;
opzioni utilizzate;
data.
Suggerimento
Il nome del backup deve essere un nome esplicito.
Nota
La nozione di estensione in Linux non esiste. In altre parole, il nostro uso delle estensioni qui è per l'operatore umano. Se l'amministratore di sistema vede un file .tar.gz o .tgz, per esempio, sa come gestire il file.
Il comando tar consente di salvare su più supporti successivi (opzioni multi-volume).
È possibile estrarre tutto o parte di un backup.
tar esegue implicitamente il backup in modalità relativa anche se il percorso delle informazioni di cui eseguire il backup è menzionato in modalità assoluta. Tuttavia, sono possibili backup e ripristini in modalità assoluta.
dove: il luogo in cui i dati saranno ripristinati;
come: assoluto o relativo.
Attenzione
Prima di un ripristino, è importante prendere del tempo per pensare e determinare il metodo più appropriato per evitare errori.
I ripristini vengono solitamente eseguiti dopo che si è verificato un problema che deve essere risolto rapidamente. Un ripristino scadente può, in alcuni casi, peggiorare la situazione.
L'utilità predefinita per la creazione di backup su sistemi UNIX è il comando tar. Questi backup possono essere compressi con bzip2, xz, lzip, lzma, lzop, gzip, compress o zstd.
tar consente di estrarre un singolo file o una directory da un backup, visualizzarne il contenuto o convalidarne l'integrità.
La creazione di un backup non compresso in modo esplicito in modalità assoluta viene eseguita con le opzioni cvfP:
$ tar c[vf]P [device] [file(s)]
Esempio:
[root]# tar cvfP /backups/home.133.P.tar /home/
Opzione
Descrizione
P
Crea un backup in modalità assoluta.
Attenzione
Con la chiave P, il percorso dei file su cui eseguire il backup deve essere inserito come assoluto. Se le due condizioni (chiave P e percorso assoluto) non sono indicate, il backup è in modalità relativa.
La creazione di un backup compresso con 'gzip' viene eseguita con le opzioni cvfz:
$ tar cvzf backup.tar.gz dirname/
Opzione
Descrizione
z
Comprime il backup con gzip.
Nota
L'estensione .tgz è un'estensione equivalente a .tar.gz.
Nota
Mantenere le chiavi cvf (tvf o xvf) invariate per tutte le operazioni di backup e aggiungere semplicemente la chiave di compressione alla fine delle chiavi rende il comando più facile da capire (ad esempio, cvfz o cvfj, ecc.).
La compressione, e di conseguenza la decompressione, avrà un impatto sul consumo di risorse (tempo e utilizzo della CPU).
Ecco una classifica della compressione di un insieme di file di testo, dal meno al più efficiente:
compress (.tar.Z)
gzip (.tar.gz)
bzip2 (.tar.bz2)
lzip (.tar.lz)
xz (.tar.xz)
Aggiungere un file o una directory a un backup esistente¶
È possibile aggiungere uno o più elementi a un backup esistente.
tar {r|A}[key(s)] [device] [file(s)]
Per aggiungere /etc/passwd al backup /backups/home.133.tar:
[root]# tar rvf /backups/home.133.tar /etc/passwd
L'aggiunta di una directory è simile. Qui aggiungi dirtoadd a backup_name.tar:
$ tar rvf backup_name.tar dirtoadd
Opzione
Descrizione
r
Aggiunge uno o più file alla fine di un backup multimediale ad accesso diretto (disco rigido).
A
Aggiunge uno o più file al termine di un backup su un supporto di accesso sequenziale (nastro).
Nota
Non è possibile aggiungere file o cartelle a un backup compresso.
$ tar rvfz backup.tgz filetoadd
tar: Cannot update compressed archives
Try `tar --help' or `tar --usage' for more information.
Nota
Se il backup è stato eseguito in modalità relativa, aggiungere file in modalità relativa. Se il backup è stato eseguito in modalità assoluta, aggiungere i file in modalità assoluta.
Le modalità miste possono causare problemi durante il ripristino.
È possibile visualizzare il contenuto di un backup senza estrarlo.
tar t[key(s)] [device]
Opzione
Descrizione
t
Visualizza il contenuto di un backup (compresso o meno).
Esempi:
$ tar tvf backup.tar
$ tar tvfz backup.tar.gz
$ tar tvfj backup.tar.bz2
Quando il numero di file in un backup diventa grande, è possibile inviare in pipe il risultato del comando tar ad un impaginatore (more, less, most, ecc.):
$ tar tvf backup.tar | less
Suggerimento
Per elencare o recuperare il contenuto di un backup, non è necessario menzionare l'algoritmo di compressione utilizzato quando è stato creato il backup. Cioè, un tar tvf è equivalente a tar tvfj, per leggere il contenuto, e un tar xvf è equivalente a tar xvfj, per estrarre.
L'integrità di un backup può essere testata con la chiave W al momento della sua creazione:
$ tar cvfW file_name.tar dir/
L'integrità di un backup può essere testata con la chiave d dopo la sua creazione:
$ tar vfd file_name.tar dir/
Suggerimento
Aggiungendo una seconda v alla chiave precedente, si otterrà l'elenco dei file archiviati così come le differenze tra i file archiviati e quelli presenti nel file system.
L'estrazione di un backup (untar) *.tar viene eseguito con le opzioni xvf:
Estrarre il file etc/exports dal backup /savings/etc.133.tar nella cartella etc della directory corrente:
$ tar xvf /backups/etc.133.tar etc/exports
Estrarre tutti i file dal backup compresso /backups/home.133.tar.bz2 nella directory corrente:
[root]# tar xvfj /backups/home.133.tar.bz2
Estrarre tutti i file dal backup /backups/etc.133.P.tar nella loro directory originale:
$ tar xvfP /backups/etc.133.P.tar
Attenzione
Vai nel posto giusto.
Controlla il contenuto del backup.
Opzione
Descrizione
x
Estrarre i file dal backup, compressi o meno.
L'estrazione di un backup tar-gzipped (*.tar.gz) viene eseguita con le opzioni xvfz:
$ tar xvfz backup.tar.gz
L'estrazione di un tar-bzipped (*.tar.bz2) viene eseguita con le opzioni xvfj:
$ tar xvfj backup.tar.bz2
Suggerimento
Per estrarre o elencare il contenuto di un backup, non è necessario menzionare l'algoritmo di compressione utilizzato per creare il backup. Cioè, un tar xvf è equivalente a tar xvfj, per estrarre il contenuto, e un tar tvf è equivalente a tar tvfj, per elencare.
Attenzione
Per ripristinare i file nella loro cartella originale (chiave P di un tar xvf), devi aver generato il backup con il percorso assoluto. Cioè, con la chiave P di un tar cvf.
Per estrarre un file specifico da un backup tar, specificare il nome di tale file alla fine del comando tar xvf.
$ tar xvf backup.tar /path/to/file
Il comando precedente estrae solo il file /path/to/file dal backup backup.tar. Questo file verrà ripristinato nella directory /path/to/ creata, o già presente, nella directory corrente.
$ tar xvfz backup.tar.gz /path/to/file
$ tar xvfj backup.tar.bz2 /path/to/file
Il comando cpio consente di salvare su più supporti successivi senza specificare alcuna opzione.
È possibile estrarre tutto o parte di un backup.
Non c'è alcuna opzione, a differenza del comando tar, per eseguire il backup e comprimere allo stesso tempo. Quindi è fatto in due passaggi: backup e compressione.
Per eseguire un backup con cpio, è necessario specificare un elenco di file di cui eseguire il backup.
Questo elenco è fornito con i comandi find, ls o cat.
find : naviga in un albero, ricorsivo o meno;
ls : elencare una directory, ricorsiva o meno;
cat : legge un file contenente gli alberi delle directory o i file da salvare.
Nota
ls non può essere usato con -l (dettagli) o -R (ricorsivo).
Il risultato del comando find viene inviato come input al comando cpio tramite una pipe (carattere |, AltGr + 6).
Qui, il comando find /etc restituisce un elenco di file corrispondenti al contenuto della directory /etc (ricorsivamente) al comando cpio, che esegue il backup.
Non dimenticare il segno > durante il salvataggio o l'opzione F save_name_cpio.
Non c'è alcuna opzione, a differenza del comando tar, per salvare e comprimere allo stesso tempo. Quindi è fatto in due passaggi: salvataggio e compressione.
La sintassi del primo metodo è più facile da capire e ricordare, perché viene eseguita in due passaggi.
Per il primo metodo, il file di backup viene automaticamente rinominato dall'utilità gzip che aggiunge .gz alla fine del nome del file. Allo stesso modo l'utilità bzip2 aggiunge automaticamente .bz2.
Ripristina solo i file il cui nome è contenuto nel file.
--make-directories o -d
Ricostruisce la struttura ad albero mancante.
-u
Sostituisce tutti i file anche se esistono.
--no-absolute-filenames
Permette di ripristinare un backup effettuato in modalità assoluta in modo relativo.
Attenzione
Per impostazione predefinita, al momento del ripristino, i file sul disco la cui ultima data di modifica è più recente o uguale alla data del backup non vengono ripristinati (per evitare di sovrascrivere le informazioni recenti con informazioni più vecchie).
L'opzione u, d'altra parte, consente di ripristinare le versioni precedenti dei file.
Esempi:
Ripristinare un backup assoluto in modalità assoluta
$ cpio –ivF home.A.cpio
Ripristino assoluto su una struttura ad albero esistente
L'opzione u consente di sovrascrivere i file esistenti nella posizione in cui avviene il ripristino.
$ cpio –iuvF home.A.cpio
Ripristinare un backup assoluto in modalità relativa
L'opzione lunga no-absolute-filenames consente un ripristino in modalità relativa. Infatti la / all'inizio del percorso verrà rimossa.
$ cpio --no-absolute-filenames -divuF home.A.cpio
Suggerimento
La creazione di directory è forse necessaria, quindi l'utilizzo dell'opzione d
Ripristinare un backup relativo
$ cpio –iv <etc.cpio
Ripristino in modalità assoluta di un file o di una directory
Il ripristino di un particolare file o directory richiede la creazione di un file di elenco che deve poi essere eliminato.