## page was renamed from BackupDelSistema/BackupConTar
#LANGUAGE it
#format wiki
<
>
<>
<>
= Introduzione =
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]]'''.
= Installazione =
'''tar''' è già preinstallato nel sistema Ubuntu.<
>
Se si è su sistema [[Installazione/CdMinimale|minimale]] nel caso non fosse presente, [[AmministrazioneSistema/InstallareProgrammi|installare]] il pacchetto [[apt://tar|tar]].
= Procedimento backup =
Per eseguire un backup dell'intero sistema, partendo dalla directory root `/`, è necessario utilizzare i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministratore]] in un [[AmministrazioneSistema/Terminale|terminale]].
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.
}}}
Di seguito è riportata in dettaglio la spiegazione della sintassi del comando:
<>
||'''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 ''' || Specifica il percorso di salvataggio del backup (`/backup.tgz` è il file utilizzato in questo esempio). ||
||<:>'''--exclude=/''' || 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).
}}}
== 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 /
}}}
{{{#!wiki note
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 /
}}}
{{{#!wiki note
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 /
}}}
{{{#!wiki note
Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede.
}}}
= 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:
||'''Sintassi opzioni'''||
||<:30%> '''Opzione''' || Risultato ||
||<:>'''x''' || estrae i file dall'archivio. ||
||<:>'''-C ''' || 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 '''.
}}}
= 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 --xattrs --acls / | nc -q 0 1024
}}}O per `zstd` con multithreading:{{{
sudo tar -cvpI 'zstd -T$(nproc)' --xattrs --acls / | nc -q 0 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]].
= Ulteriori risorse =
* [[Ubuntu:BackupYourSystem|Documento originale]]
* [[https://it.wikipedia.org/wiki/Tar_(software)|Tar (wikipedia)]]
* [[AmministrazioneSistema/FormatiDiCompressione|Formati di compressione]]
----
CategoryAmministrazione