Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati
  • Differenze per "AmministrazioneSistema/BackupDelSistema/BackupConTar"
Differenze tra le versioni 34 e 64 (in 30 versioni)
Versione 34 del 16/11/2007 20.01.25
Dimensione: 7502
Commento: da revisionare
Versione 64 del 17/11/2025 11.22.03
Dimensione: 11714
Autore: ivantu
Commento: +sintassi_zstd
Le cancellazioni sono segnalate in questo modo. Le aggiunte sono segnalate in questo modo.
Linea 4: Linea 4:
[[BR]]
||<tablestyle="float:right; font-size: 0.9em; width:35%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]||
<<BR>>
<<Indice(depth=2)>>
<<Informazioni(forum="https://forum.ubuntu-it.org/viewtopic.php?f=46&t=599983"; rilasci="24.04 22.04 20.04 18.04")>>
Linea 9: Linea 10:
Molti di voi probabilmente usavano Windows prima di iniziare a usare Ubuntu. Prima o poi avrete avuto la necessità di fare il backup e ripristinare il sistema. In Windows queste operazioni richiedono software proprietario per il quale avrete dovuto riavviare il sistema ed eseguire l'avvio in una sessione speciale in cui eseguire il backup o il ripristino (questo avviene con programmi come '''Norton Ghost'''). Con '''Ubuntu''' è possibile eseguire un backup dell'intero sistema con gli stessi strumenti utilizzati per archiviare o comprimere ogni altro file: '''[[https://it.wikipedia.org/wiki/Tar_(software)|tar]]'''.
Linea 11: Linea 12:
Sicuramente vi sarete chiesti per quale motivo non fosse possibile semplicemente salvare l'intera unità `C:\` in un archivio `*.zip`. Quest'operazione è impossibile perché in Windows ci sono molti file che non possono essere copiati o sovrascritti mentre sono in uso dal sistema. Per questo, è necessario un software specifico. = Installazione =
Linea 13: Linea 14:
In Ubuntu non vi è alcuna necessità di usare programmi come '''Ghost''' per creare un backup dell'intero sistema. Utilizzare '''Ghost''' su sistemi con un filesystem diverso da '''ext2''' può causare degli errori: '''ext3''', il filesystem standard delle partizioni Ubuntu, è considerato da '''Ghost''' come un formato '''ext2''' difettoso. '''tar''' è già preinstallato nel sistema Ubuntu.<<BR>>
Se si è su sistema [[Installazione/CdMinimale|minimale]] nel caso non fosse presente, [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://tar|tar]].
Linea 15: Linea 17:
= Il backup = = Procedimento backup =
Linea 17: Linea 19:
Con Ubuntu è possibile eseguire un backup con gli stessi strumenti utilizzati per archiviare o comprimere ogni altro file: '''tar'''. Per eseguire un backup dell'intero sistema, partendo dalla directory root `/`, è necessario utilizzare i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministratore]] in un [[AmministrazioneSistema/Terminale|terminale]].
Linea 19: Linea 21:
Per eseguire un backup dell'intero sistema partendo dalla directory root `/`, è necessario utilizzare il comando [:AmministrazioneSistema/Sudo:sudo].  0. Spostarsi nella directory o partizione di destinazione del backup, digitando in un [[AmministrazioneSistema/Terminale|terminale]] il comando:{{{
 cd `/directory_destinazione_backup`
 }}}
 0. Per effettuare il backup del sistema /, digitare il seguente comando:{{{
 sudo tar -cvpzf /backup.tgz --exclude=/proc --exclude=/lost_found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /
 }}}Questo comando include le opzioni essenziali per preservare permessi, attributi estesi e ACLs, fondamentali per un ripristino funzionale.
 {{{#!wiki note
 Per i sistemi che utilizzano SELinux (come Fedora, RHEL, CentOS e OpenSUSE), è fondamentale aggiungere anche l'opzione '''--selinux''' al comando di backup per preservare i contesti di sicurezza.
 }}}
Linea 21: Linea 31:
Spostarsi nella directory `/`: {{{
cd /
Di seguito è riportata in dettaglio la spiegazione della sintassi del comando:

<<Anchor(sintassi)>>

||<tablestyle="width:50%;" -2:>'''Sintassi opzioni'''||
||<:30%> '''Opzione''' || Risultato ||
||<:>'''tar''' || Programma di archiviazione utilizzato per eseguire il backup. ||
||<:>'''-c''' || Crea un nuovo archivio di backup. ||
||<:>'''-v''' || Modalità verbose: tar restituisce sullo schermo una descrizione delle operazioni in corso. ||
||<:>'''-p''' || Mantiene i permessi POSIX di tutti i file. ||
||<:>'''-z''' || Comprime il file di backup con gzip per ridurne le dimensioni. ||
||<:>'''-f <nomefile>''' || Specifica il percorso di salvataggio del backup (`/backup.tgz` è il file utilizzato in questo esempio). ||
||<:>'''--exclude=/<dir>''' || Esclude dal backup la directory specificata. ||
||<:>'''--xattrs''' || Preserva gli attributi estesi dei file (extended attributes). Essenziale per un ripristino completo. ||
||<:>'''--acls''' || Preserva le liste di controllo accessi (Access Control Lists - ACLs). Essenziale per un ripristino completo. ||
||<:>'''--selinux''' || Preserva i contesti di sicurezza SELinux. Fondamentale per i sistemi che utilizzano SELinux. ||
||<:>'''/''' || Specifica / come directory di backup (root). ||

== Esclusione directory ==

Si consiglia di non includere le cartelle di sistema `/mnt` e `/media`, poiché la loro inclusione comporterebbe il backup di altre partizioni eventualmente montate. È altresì consigliabile escludere le directory `/run`, `/tmp`, `/var/tmp`, `/var/run` e `/dev`, in quanto contengono file temporanei, dati di runtime e file speciali di periferica che vengono ricreati dinamicamente all'avvio del sistema e non sono necessari per un ripristino efficace.

{{{#!wiki note
Non è necessario effettuare il backup di tutto il sistema, dato che alcune directory non sono indispensabili (compreso il file di backup stesso e quelle contenenti dati temporanei, di runtime o file speciali di periferica).
Linea 25: Linea 57:
Il comando da utilizzare per fare il backup del sistema è: {{{
sudo tar -cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys /
}}}
== Aggiungere la data ==
Linea 29: Linea 59:
Vediamo ora di spiegare questa sintassi:

 * '''tar''': è il programma necessario a fare il backup
 * '''c''': crea un nuovo archivio di backup
 * '''v''': modalità ''verbose'', '''tar''' restituisce sullo schermo una descrizione delle operazioni in corso
 * '''p''': mantiene i permessi di tutti i file
 * '''z''': comprime il file di backup con '''gzip''' per renderlo più piccolo
 * '''f <nomefile>''': specifica dove salvare il backup, `/backup.tgz` è il file utilizzato in questo esempio
 * Di seguito vengono indicate tutte le directory da escludere dal backup. Non è necessario fare il backup di tutto quanto, alcune directory non sono indispensabili. Assicurarsi di non includere anche il file di backup stesso, altrimenti si potrebbero avere strani risultati. È anche consigliato non includere le cartella `/mnt` e `/media`: nel caso ci siano altre partizioni montate, si farebbe il backup anche di quelle.
 * Dopo tutte le opzioni c'è le directory di cui vogliamo fare il backup. In questo caso è indicato `/` per salvare quasi tutto.

Digitato il comandi, premere '''Invio''' per avviare il backup. Tutto il procedimento impiegherà un po' di tempo.
Verrà quindi creato il file `backup.tgz`, probabilmente molto grande, all'interno della directory `/` del file system. Ora, è possibile copiarlo su un DVD o spostarlo in un'altra computer.

È possibile anche utilizzare '''bzip2''' per comprimere il file di backup. Questo porta un maggiore compressione a discapito di una velocità minore. Sostituire nel comando precedente l'opzione '''z''' con '''j''' e modificare l'estensione del file di backup: {{{
tar -cvpjf /backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys /
}}}

== Datazione del Backup ==

Al nome del file di backup è possibile aggiungere la data di esecuzione dello stesso; a tale scopo è sufficiente aggiungere la seguente dicitura al comando di backup:
{{{
Al nome del file di backup è possibile aggiungere la data di esecuzione. A tale scopo, è sufficiente inserire la seguente dicitura nel comando di backup:{{{
Linea 54: Linea 63:
Il comando finale sarà simile al seguente:
{{{
tar -cvpjf /backup-`date+%d-%m-%Y`.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys /
Il comando aggiungerà al nome del file una data in formato «giorno-mese-anno», come nel seguente esempio:{{{
sudo tar -cvpjf /backup-`date+%d-%m-%Y`.tar.bz2 --exclude=/proc --exclude=/lost_found --exclude=/backup-`date+%d-%m-%Y`.tar.bz2 --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /
Linea 59: Linea 67:
Il precedente comando aggiungerà al nome del file una data in formato «giorno-mese-anno».

== Backup attraverso la rete ==

Se il vostro disco fisso non ha abbastanza spazio o non è possibile montarne un altro in cui salvare il backup, è possibile usare '''netcat''' per spostare il file di backup.

Dalla parte del ricevente, impostare '''netcat''' in modo da scrivere il backup in questo modo: {{{
nc -l -p 1024 > backup.tar.bz2
{{{#!wiki note
Ricordarsi di aggiungere `--selinux` anche qui se il sistema lo richiede.
Linea 69: Linea 71:
Quindi, mettere in ''pipe'' il comando per eseguire il backup, senza il flag '''f''', con '''netcat''' in questo modo: {{{
tar -cvpj <tutte le altre opzioni> / | nc -q 0 <host di ricezione> 1024
= Compressione della Directory =

È possibile utilizzare diversi algoritmi di compressione per il file di backup.

== Compressione con bzip2 ==

È possibile anche utilizzare '''bzip2''' per comprimere il file di backup. Questo porta una maggiore compressione, seppur a discapito di una minore velocità rispetto a '''gzip'''.

Per utilizzare '''bzip2''', sostituire nel comando di creazione del backup l'opzione ''z'' con ''j'' e modificare l'estensione del file di backup, come nel seguente esempio:{{{
sudo tar -cvpjf /backup.tar.bz2 --exclude=/proc --exclude=/lost_found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /
Linea 73: Linea 83:
||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5%>[[Immagine(Icone/Piccole/note.png,,center)]] ||<style="padding:0.5em; border:none;">''1024 è un numero di porta qualsiasi, un numero da 1024 in su dovrebbe andare bene.'' ||

Se tutto funziona correttamente il backup sarà inviato in ''pipe'' attraverso la rete. Con una rete abbastanza veloce, potrebbe risultare più veloce dello scrivere il file sul disco.

= Ripristinare =

||<tablestyle="text-align: justify; width:100%; " style="border:none;" 5%>[[Immagine(Icone/Piccole/warning.png,,center)]] ||<style="padding:0.5em; border:none;">'''Prestare molta attenzione alle istruzioni seguenti, in caso di errori si possono sovrascrivere file importanti per il sistema. Il comando seguente sovrascriverà tutti i file del sistema con quelli presenti nell'archivio di backup.''' ||

Per ripristinare il backup non c'è bisogno di entrare in una modalità speciale del sistema operativo, è possibile farlo con il sistema in esecuzione. Nel caso in cui non si riesca ad accedere al sistema, è possibile utilizzare un D ''live'' per ottenere gli stessi risultati.

Potete rimuovere qualsiasi file dal sistema mentre questo è in esecuzione, con tutto ciò che questo comporta al successivo riavvio.

 0. Copiare il file di backup nella directory `/`

 0. Per eseguire il ripristino, digitare: {{{
sudo tar -xvpzf /backup.tgz -C /
{{{#!wiki note
Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede.
Linea 91: Linea 87:
 0. Nel caso in cui sia stato utilizzato '''bunzip2''', digitare: {{{
tar -xvpjf backup.tar.bz2 -C /
}}} Alcune opzioni:
  * '''x''': serve per estrarre i file nell'archivio
  * '''-C <directory>''': serve per spostarsi in una specifica directory, in questo caso `/`, prima di estrarre i file.
== Compressione con Zstd (Raccomandato) ==
Linea 97: Linea 89:
 0. Premere '''Invio''' per avviare il ripristino. La procedura potrebbe impiegare un po' di tempo. Al termine il sistema sarà completamente ripristinato. Assicurarsi, prima di fare qualsiasi altra cosa, di ricreare le directory escluse durante il backup nel caso siano state compromesse (`/proc`, `/lost+found`, `/mnt`, `/sys`...): {{{
mkdir /proc /lost+found /mnt /sys
'''Zstd''' (Zstandard) è un algoritmo di compressione moderno che offre un eccellente bilanciamento tra velocità e rapporto di compressione, spesso superando '''gzip''' e '''bzip2'''. Supporta anche il multithreading, accelerando notevolmente le operazioni su CPU moderne.

Per utilizzare `zstd` con il multithreading, è necessario utilizzare l'opzione `-I` di '''tar''' e specificare il comando `zstd` con l'opzione '''-T$(nproc)''' che sfrutta tutti i core della CPU disponibili. L'estensione del file sarà solitamente `.tar.zst`.{{{
sudo tar -cvpI 'zstd -T$(nproc)' -f /backup.tar.zst --exclude=/proc --exclude=/lost_found --exclude=/backup.tar.zst --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /
Linea 101: Linea 95:
Al prossimo riavvio tutto dovrebbe essere come prima di effettuare il backup. Per una compressione `zstd` a singolo thread (o se `zstd` non supporta '''-T''' o non si vuole il multithreading), si può anche usare la scorciatoia '''--zstd''' direttamente con tar (se la versione di tar lo supporta) o `-I 'zstd'`:
 * Con l'opzione nativa di tar (se disponibile):{{{
sudo tar -cvp --zstd -f /backup.tar.zst --exclude=/proc --exclude=/lost_found --exclude=/backup.tar.zst --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /
}}}
 * Oppure forzando `zstd` senza multithreading:{{{
sudo tar -cvpI 'zstd' -f /backup.tar.zst --exclude=/proc --exclude=/lost_found --exclude=/backup.tar.zst --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /
}}}
Linea 103: Linea 103:
= Programmare il backup con cron = {{{#!wiki note
Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede.
}}}
Linea 105: Linea 107:
L'esecuzione di queste operazioni può essere programmata, e quindi resa automatica, con il comando [:AmministrazioneSistema/Cron:cron]. = Ripristino =

{{{#!wiki important
Prestare molta attenzione alle istruzioni seguenti. Errori potrebbero sovrascrivere file importanti per il sistema. Il comando seguente sovrascriverà tutti i file del sistema con quelli presenti nell'archivio di backup.
}}}

Per ripristinare il backup, non è necessario accedere a una modalità speciale del sistema operativo; è possibile farlo con il sistema in esecuzione. Nel caso in cui l'accesso al sistema non sia possibile, è utilizzabile un DVD/USB live per ottenere gli stessi risultati.

È possibile rimuovere qualsiasi file dal sistema mentre questo è in esecuzione, con tutte le implicazioni al successivo riavvio.

 0. Copiare il file di backup nella directory `/`.
 0. Per eseguire il ripristino, assicurarsi di includere le stesse opzioni di compressione, '''--xattrs''', '''--acls''' e '''--selinux''' (se usata) che sono state usate durante la creazione del backup. Digitare in un [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:
  * Per backup `gzip` (.tgz):{{{
  sudo tar -xvpzf /backup.tgz -C / --xattrs --acls
  }}}
  * Per backup `bzip2` (.tar.bz2):{{{
  sudo tar -xvpjf backup.tar.bz2 -C / --xattrs --acls
  }}}
  * Per backup `zstd` (.tar.zst) con compressione esterna (-I):{{{
  sudo tar -xvpI 'zstd -d -T$(nproc)' -f /backup.tar.zst -C / --xattrs --acls
  }}}Usare `zstd -d` per la decompressione, con '''-T$(nproc)''' se usato in compressione.
  * Per backup `zstd` (.tar.zst) con opzione nativa (--zstd):{{{
  sudo tar -xvp --zstd -f /backup.tar.zst -C / --xattrs --acls
  }}}
 0. Premere '''Invio''' per avviare il ripristino.
 0. Al termine della procedura, assicurarsi di ricreare eventuali directory escluse durante il backup nel caso siano state compromesse (ad esempio `/proc`, `/lost+found`, `/mnt`, `/sys`, `/run`, `/tmp`, `/var/tmp`, `/var_run`, `/dev`, ecc.):{{{
 sudo mkdir /proc /lost_found /mnt /sys /run /tmp /var/tmp /var_run /dev
 }}}

Al successivo riavvio, l'intero sistema sarà stato ripristinato.

Alcune opzioni per ripristino:

||<tablestyle="width:50%;" -2:>'''Sintassi opzioni'''||
||<:30%> '''Opzione''' || Risultato ||
||<:>'''x''' || estrae i file dall'archivio. ||
||<:>'''-C <directory>''' || sposta in una specifica directory, in questo caso /, prima di estrarre i file. ||
||<:>'''--xattrs''' || Ripristina gli attributi estesi. ||
||<:>'''--acls''' || Ripristina le liste di controllo accessi. ||
||<:>'''--selinux''' || Ripristina i contesti di sicurezza SELinux. ||

{{{#!wiki note
Se il backup è stato creato con '''--selinux''', è indispensabile includerlo anche nel comando di ripristino, dopo le opzioni di compressione e '''f <file>'''.
}}}

= Backup attraverso la rete =

Qualora il disco fisso non disponga di spazio sufficiente o non fosse possibile montarne un altro per salvare il backup, è possibile usare `netcat` per spostare il file di backup.

Dalla parte del ricevente, impostare `netcat` in base al tipo di compressione utilizzata:

 * Per backup `gzip` (.tgz):{{{
 nc -l -p 1024 > backup.tgz
 }}}
 * Per backup `bzip2` (.tar.bz2):{{{
 nc -l -p 1024 > backup.tar.bz2
 }}}
 * Per backup `zstd` (.tar.zst):{{{
 nc -l -p 1024 > backup.tar.zst
 }}}

Quindi, inviare in pipe il comando per eseguire il backup con `netcat`, senza il flag '''-f''', e ricordando di includere '''--xattrs''', '''--acls''' e '''--selinux''' (se usato), come in questo esempio (per `bzip2`):{{{
sudo tar -cvpj <tutte le altre opzioni> --xattrs --acls / | nc -q 0 <host_di_ricezione> 1024
}}}O per `zstd` con multithreading:{{{
sudo tar -cvpI 'zstd -T$(nproc)' <tutte le altre opzioni> --xattrs --acls / | nc -q 0 <host_di_ricezione> 1024
}}}

{{{#!wiki note
«1024» si riferisce al numero di una porta. Utilizzare un numero pari a 1024 o superiore. Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede.
}}}

Se tutto è andato a buon fine, il backup sarà inviato in pipe attraverso la rete. La scrittura del file su disco sarà più rapida se la rete è veloce.

= Programmare il backup con Cron =

L'esecuzione di queste operazioni può essere programmata e resa automatica con '''cron'''. Per maggiori informazioni, consultare [[AmministrazioneSistema/Cron|questa guida]].
Linea 109: Linea 186:
 * [:AmministrazioneSistema/BackupDelSistema:Backup del sistema]
 * [:Amanda:Guida al tool di backup Amanda]
 * [http://www.ubuntuforums.org/showthread.php?t=35087]
 * Documento originale: [wiki:Ubuntu/BackupYourSystem BackupYourSystem]
 * [[Ubuntu:BackupYourSystem|Documento originale]]
 * [[https://it.wikipedia.org/wiki/Tar_(software)|Tar (wikipedia)]]
 * [[AmministrazioneSistema/FormatiDiCompressione|Formati di compressione]]
Linea 115: Linea 192:
## RevisioneStilistica
----
CategoryDaRevisionare


Guida verificata con Ubuntu: 22.04 24.04

Problemi in questa pagina? Segnalali in questa discussione

Introduzione

Con Ubuntu è possibile eseguire un backup dell'intero sistema con gli stessi strumenti utilizzati per archiviare o comprimere ogni altro file: tar.

Installazione

tar è già preinstallato nel sistema Ubuntu.
Se si è su sistema minimale nel caso non fosse presente, installare il pacchetto tar.

Procedimento backup

Per eseguire un backup dell'intero sistema, partendo dalla directory root /, è necessario utilizzare i privilegi di amministratore in un terminale.

  1. Spostarsi nella directory o partizione di destinazione del backup, digitando in un terminale il comando:

     cd `/directory_destinazione_backup`
  2. Per effettuare il backup del sistema /, digitare il seguente comando:

     sudo tar -cvpzf /backup.tgz --exclude=/proc --exclude=/lost_found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /
    Questo comando include le opzioni essenziali per preservare permessi, attributi estesi e ACLs, fondamentali per un ripristino funzionale.
    • Per i sistemi che utilizzano SELinux (come Fedora, RHEL, CentOS e OpenSUSE), è fondamentale aggiungere anche l'opzione --selinux al comando di backup per preservare i contesti di sicurezza.

Di seguito è riportata in dettaglio la spiegazione della sintassi del comando:

Sintassi opzioni

Opzione

Risultato

tar

Programma di archiviazione utilizzato per eseguire il backup.

-c

Crea un nuovo archivio di backup.

-v

Modalità verbose: tar restituisce sullo schermo una descrizione delle operazioni in corso.

-p

Mantiene i permessi POSIX di tutti i file.

-z

Comprime il file di backup con gzip per ridurne le dimensioni.

-f <nomefile>

Specifica il percorso di salvataggio del backup (/backup.tgz è il file utilizzato in questo esempio).

--exclude=/<dir>

Esclude dal backup la directory specificata.

--xattrs

Preserva gli attributi estesi dei file (extended attributes). Essenziale per un ripristino completo.

--acls

Preserva le liste di controllo accessi (Access Control Lists - ACLs). Essenziale per un ripristino completo.

--selinux

Preserva i contesti di sicurezza SELinux. Fondamentale per i sistemi che utilizzano SELinux.

/

Specifica / come directory di backup (root).

Esclusione directory

Si consiglia di non includere le cartelle di sistema /mnt e /media, poiché la loro inclusione comporterebbe il backup di altre partizioni eventualmente montate. È altresì consigliabile escludere le directory /run, /tmp, /var/tmp, /var/run e /dev, in quanto contengono file temporanei, dati di runtime e file speciali di periferica che vengono ricreati dinamicamente all'avvio del sistema e non sono necessari per un ripristino efficace.

Non è necessario effettuare il backup di tutto il sistema, dato che alcune directory non sono indispensabili (compreso il file di backup stesso e quelle contenenti dati temporanei, di runtime o file speciali di periferica).

Aggiungere la data

Al nome del file di backup è possibile aggiungere la data di esecuzione. A tale scopo, è sufficiente inserire la seguente dicitura nel comando di backup:

`date +%d-%m-%Y`

Il comando aggiungerà al nome del file una data in formato «giorno-mese-anno», come nel seguente esempio:

sudo tar -cvpjf /backup-`date+%d-%m-%Y`.tar.bz2 --exclude=/proc --exclude=/lost_found --exclude=/backup-`date+%d-%m-%Y`.tar.bz2 --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /

Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede.

Compressione della Directory

È possibile utilizzare diversi algoritmi di compressione per il file di backup.

Compressione con bzip2

È possibile anche utilizzare bzip2 per comprimere il file di backup. Questo porta una maggiore compressione, seppur a discapito di una minore velocità rispetto a gzip.

Per utilizzare bzip2, sostituire nel comando di creazione del backup l'opzione z con j e modificare l'estensione del file di backup, come nel seguente esempio:

sudo tar -cvpjf /backup.tar.bz2 --exclude=/proc --exclude=/lost_found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /

Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede.

Compressione con Zstd (Raccomandato)

Zstd (Zstandard) è un algoritmo di compressione moderno che offre un eccellente bilanciamento tra velocità e rapporto di compressione, spesso superando gzip e bzip2. Supporta anche il multithreading, accelerando notevolmente le operazioni su CPU moderne.

Per utilizzare zstd con il multithreading, è necessario utilizzare l'opzione -I di tar e specificare il comando zstd con l'opzione -T$(nproc) che sfrutta tutti i core della CPU disponibili. L'estensione del file sarà solitamente .tar.zst.

sudo tar -cvpI 'zstd -T$(nproc)' -f /backup.tar.zst --exclude=/proc --exclude=/lost_found --exclude=/backup.tar.zst --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /

Per una compressione zstd a singolo thread (o se zstd non supporta -T o non si vuole il multithreading), si può anche usare la scorciatoia --zstd direttamente con tar (se la versione di tar lo supporta) o -I 'zstd':

  • Con l'opzione nativa di tar (se disponibile):

    sudo tar -cvp --zstd -f /backup.tar.zst --exclude=/proc --exclude=/lost_found --exclude=/backup.tar.zst --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /
  • Oppure forzando zstd senza multithreading:

    sudo tar -cvpI 'zstd' -f /backup.tar.zst --exclude=/proc --exclude=/lost_found --exclude=/backup.tar.zst --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/tmp --exclude=/var/tmp --exclude=/var_run --exclude=/dev --xattrs --acls /

Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede.

Ripristino

Prestare molta attenzione alle istruzioni seguenti. Errori potrebbero sovrascrivere file importanti per il sistema. Il comando seguente sovrascriverà tutti i file del sistema con quelli presenti nell'archivio di backup.

Per ripristinare il backup, non è necessario accedere a una modalità speciale del sistema operativo; è possibile farlo con il sistema in esecuzione. Nel caso in cui l'accesso al sistema non sia possibile, è utilizzabile un DVD/USB live per ottenere gli stessi risultati.

È possibile rimuovere qualsiasi file dal sistema mentre questo è in esecuzione, con tutte le implicazioni al successivo riavvio.

  1. Copiare il file di backup nella directory /.

  2. Per eseguire il ripristino, assicurarsi di includere le stesse opzioni di compressione, --xattrs, --acls e --selinux (se usata) che sono state usate durante la creazione del backup. Digitare in un terminale il seguente comando:

    • Per backup gzip (.tgz):

        sudo tar -xvpzf /backup.tgz -C / --xattrs --acls
    • Per backup bzip2 (.tar.bz2):

        sudo tar -xvpjf backup.tar.bz2 -C / --xattrs --acls
    • Per backup zstd (.tar.zst) con compressione esterna (-I):

        sudo tar -xvpI 'zstd -d -T$(nproc)' -f /backup.tar.zst -C / --xattrs --acls

      Usare zstd -d per la decompressione, con -T$(nproc) se usato in compressione.

    • Per backup zstd (.tar.zst) con opzione nativa (--zstd):

        sudo tar -xvp --zstd -f /backup.tar.zst -C / --xattrs --acls
  3. Premere Invio per avviare il ripristino.

  4. Al termine della procedura, assicurarsi di ricreare eventuali directory escluse durante il backup nel caso siano state compromesse (ad esempio /proc, /lost+found, /mnt, /sys, /run, /tmp, /var/tmp, /var_run, /dev, ecc.):

     sudo mkdir /proc /lost_found /mnt /sys /run /tmp /var/tmp /var_run /dev

Al successivo riavvio, l'intero sistema sarà stato ripristinato.

Alcune opzioni per ripristino:

Sintassi opzioni

Opzione

Risultato

x

estrae i file dall'archivio.

-C <directory>

sposta in una specifica directory, in questo caso /, prima di estrarre i file.

--xattrs

Ripristina gli attributi estesi.

--acls

Ripristina le liste di controllo accessi.

--selinux

Ripristina i contesti di sicurezza SELinux.

Se il backup è stato creato con --selinux, è indispensabile includerlo anche nel comando di ripristino, dopo le opzioni di compressione e f <file>.

Backup attraverso la rete

Qualora il disco fisso non disponga di spazio sufficiente o non fosse possibile montarne un altro per salvare il backup, è possibile usare netcat per spostare il file di backup.

Dalla parte del ricevente, impostare netcat in base al tipo di compressione utilizzata:

  • Per backup gzip (.tgz):

     nc -l -p 1024 > backup.tgz
  • Per backup bzip2 (.tar.bz2):

     nc -l -p 1024 > backup.tar.bz2
  • Per backup zstd (.tar.zst):

     nc -l -p 1024 > backup.tar.zst

Quindi, inviare in pipe il comando per eseguire il backup con netcat, senza il flag -f, e ricordando di includere --xattrs, --acls e --selinux (se usato), come in questo esempio (per bzip2):

sudo tar -cvpj <tutte le altre opzioni> --xattrs --acls / | nc -q 0 <host_di_ricezione> 1024

O per zstd con multithreading:

sudo tar -cvpI 'zstd -T$(nproc)' <tutte le altre opzioni> --xattrs --acls / | nc -q 0 <host_di_ricezione> 1024

«1024» si riferisce al numero di una porta. Utilizzare un numero pari a 1024 o superiore. Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede.

Se tutto è andato a buon fine, il backup sarà inviato in pipe attraverso la rete. La scrittura del file su disco sarà più rapida se la rete è veloce.

Programmare il backup con Cron

L'esecuzione di queste operazioni può essere programmata e resa automatica con cron. Per maggiori informazioni, consultare questa guida.

Ulteriori risorse


CategoryAmministrazione