|
Dimensione: 9474
Commento: indice inizio traduzione
|
← Versione 64 del 17/11/2025 11.22.03 ⇥
Dimensione: 11714
Commento: +sintassi_zstd
|
| Le cancellazioni sono segnalate in questo modo. | Le aggiunte sono segnalate in questo modo. |
| Linea 1: | Linea 1: |
| [[BR]] ||<tablestyle="fixed; font-size: 0.9em; width:50%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;">'''Indice'''[[BR]][[TableOfContents]]|| |
## page was renamed from BackupDelSistema/BackupConTar #LANGUAGE it #format wiki <<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 4: | Linea 8: |
| '''Nota: Questo documento richiede una revisione. Use at your own risk. Si raccomanda di leggere l'intera guida prima di effettuare alcuna operazione''' | = Introduzione = |
| Linea 6: | Linea 10: |
| Questa guida al backup del sistema con tar è tratta da un post scritto da Heliode sul Forum Ubuntu. Questo è il thread originale della discussione: http://www.ubuntuforums.org/showthread.php?t=35087 | 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 8: | Linea 12: |
| == Introduzione == | = Installazione = |
| Linea 10: | Linea 14: |
| Hi, and welcome to the Heliode guide to successful backing-up and restoring of a Linux system! | '''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 12: | Linea 17: |
| Most of you have probably used Windows before you started using Ubuntu. During that time you might have needed to backup and restore your system. For Windows you would need proprietary software for which you would have to reboot your machine and boot into a special environment in which you could perform the backing-up/restoring (programs like Norton Ghost). During that time you might have wondered why it wasn't possible to just add the whole c:\ to a big zip-file. This is impossible because in Windows, there are lots of files you can't copy or overwrite while they are being used, and therefore you needed specialized software to handle this. |
= Procedimento backup = |
| Linea 15: | Linea 19: |
| Well, I'm here to tell you that those things, just like rebooting, are Windows Crazy Things (tm). There's no need to use programs like Ghost to create backups of your Ubuntu system (or any Linux system, for that matter). In fact; using Ghost might be a very bad idea if you are using anything but ext2. Ext3, the default Ubuntu partition, is seen by Ghost as a damaged ext2 partition and does a very good job at screwing up your data. | 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 17: | Linea 21: |
| == Backing-up == | 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 19: | Linea 31: |
| "What should I use to backup my system then?" might you ask. Easy; the same thing you use to backup/compress everything else; TAR. Unlike Windows, Linux doesn't restrict root access to anything, so you can just throw every single file on a partition in a TAR file! | Di seguito è riportata in dettaglio la spiegazione della sintassi del comando: |
| Linea 21: | Linea 33: |
| To do this, become root with | <<Anchor(sintassi)>> |
| Linea 23: | Linea 35: |
| {{{ sudo su |
||<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 27: | Linea 57: |
| and go to the root of your filesystem (we use this in our example, but you can go anywhere you want your backup to end up, including remote or removable drives.) | == Aggiungere la data == |
| Linea 29: | Linea 59: |
| {{{ cd / |
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` |
| Linea 33: | Linea 63: |
| Now, below is the full command I would use to make a backup of my system: {{{ tar -cvpzf /backup.tgz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --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 39: | Linea 67: |
| Now, lets explain this a little bit: * 'tar' is the program used to do a backup * c - create a new backup archive * v - verbose mode, tar will print what it's doing to the screen * p - preserve permissions, keeps all file permissions the same * z - compress the backup file with 'gzip' to make it smaller * f <filename> - specifies where to store the backup, /backup.tgz is the file used in this example * Now come the directories we want to exclude. We don't want to backup everything since some dirs aren't very useful to include. Also make sure you don't include the file itself, or else you'll get weird results. You might also not want to include the /mnt folder if you have other partitions mounted there or you'll end up backing those up too. Also make sure you don't have anything mounted in /media (i.e. don't have any cd's or removable media mounted). Either that or exclude /media. * After all of the options is the directory we want to backup. Since we want to backup everything we use / for the root directory If you want to exclude all other filesystems you can use the 'l' option instead of --exclude. The above command would thus be: {{{ tar -cvpzlf /backup.tgz --exclude=/lost+found --exclude=/backup.tgz / |
{{{#!wiki note Ricordarsi di aggiungere `--selinux` anche qui se il sistema lo richiede. |
| Linea 55: | Linea 71: |
| EDIT: kvidell suggests on the forum thread that we also exclude the /dev directory. I have other evidence that says it is very unwise to do so though. | = Compressione della Directory = |
| Linea 57: | Linea 73: |
| Well, if the command agrees with you, hit enter (or return, whatever) and sit back & relax. This might take a while. | È possibile utilizzare diversi algoritmi di compressione per il file di backup. |
| Linea 59: | Linea 75: |
| Afterwards you'll have a file called backup.tgz, which is probably pretty large, in the root of your filesytem. Now you can burn it to DVD or move it to another machine; whatever you like! | == Compressione con bzip2 == |
| Linea 61: | Linea 77: |
| attachment:IconsPage/IconWarning3.png WARNING: Files that are bigger than 2GB (a little less actually) are not supported by ISO9660 and may or may not be restorable. So don't simply burn a DVD with a huge .iso file on it. Split it up using the command split (see man page) or use a different way to get it onto the DVD. One possiblity (untested) is the following: | È 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'''. |
| Linea 63: | Linea 79: |
| {{{ sudo tar --create --bzip2 --exclude /tmp --one-file-system --sparse / | growisofs -use-the-force-luke -Z /dev/hda=/proc/self/fd/0 |
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 67: | Linea 83: |
| Note that this only backs up one file system. You might want to use --exclude instead of --one-file-system to filter out the stuff you don't want backed up. This assumes your DVD drive is /dev/hda. This will not create a mountable DVD. To restore it you will reference the device file: {{{ sudo tar --extract --bzip2 --file /dev/hda |
{{{#!wiki note Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede. |
| Linea 73: | Linea 87: |
| EDIT2: At the end of the process you might get a message along the lines of 'tar: Error exit delayed from previous errors' or something, but in most cases you can just ignore that. |
== Compressione con Zstd (Raccomandato) == |
| Linea 76: | Linea 89: |
| Alternatively, you can use Bzip2 to compress your backup. This means higher compression but lower speed. If compression is important to you, just substitute the 'z' in the command with 'j', and give the backup the right extension. That would make the command look like this: |
'''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. |
| Linea 80: | Linea 91: |
| {{{ tar -cvpjf /backup.tar.bz2 --exclude=/proc --exclude=/lost+found --exclude=/backup.tar.bz2 --exclude=/mnt --exclude=/sys / |
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 84: | Linea 95: |
| === Backup over network === If the filesystem is low on space and you can't mount another filesystem to store the backup file on it is possible to use netcat to trasfer the backup. On the receiving end you'll setup netcat to write the backup file like this: {{{ nc -l -p 1024 > backup.tar.bz2 |
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 95: | Linea 103: |
| Then you pipe the tar command without the 'f' flag through netcat on the sending end like this: {{{ tar -cvpj <all those other options> / | nc -q 0 <receiving host> 1024 |
{{{#!wiki note Ricordarsi di aggiungere --selinux anche qui se il sistema lo richiede. |
| Linea 101: | Linea 107: |
| In the above commands 1024 is just a random portnumber, anything from 1024 and up should work. | = Ripristino = |
| Linea 103: | Linea 109: |
| If all goes well the backup will be piped through the network without touching the filesystem being read. With a really fast network this could actually be faster then writing the backup file back to disk. A variation (which I just dreamed up, so I can't testify on its reliability) on the above is this command: {{{ tar -cvpj <all those other options> / | ssh <remote host> "cat > backup.tar.bz2" |
{{{#!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. |
| Linea 112: | Linea 113: |
| == Restoring == | 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. |
| Linea 114: | Linea 115: |
| attachment:IconsPage/IconWarning3.png Warning: Please, for goodness sake, be careful here. If you don't understand what you are doing here you might end up overwriting stuff that is important to you, so please take care! | È possibile rimuovere qualsiasi file dal sistema mentre questo è in esecuzione, con tutte le implicazioni al successivo riavvio. |
| Linea 116: | Linea 117: |
| Well continue with our example from the previous chapter which created the file backup.tgz in the root directory. | 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 }}} |
| Linea 118: | Linea 136: |
| Once again, make sure you are root and that you and the backup file are in the root of the filesystem. | Al successivo riavvio, l'intero sistema sarà stato ripristinato. |
| Linea 120: | Linea 138: |
| One of the beautiful things of Linux is that this will even work on a running system; no need to screw around with boot-cd's or anything. Of course, if you've rendered your system unbootable you might have no choice but to use a live cd but the results are the same. You can even remove every single file of a Linux system while it is running with one command. I'm not giving you that command though! | Alcune opzioni per ripristino: |
| Linea 122: | Linea 140: |
| Well, back on-topic. This is the command that I would use: |
||<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. || |
| Linea 125: | Linea 148: |
| {{{ tar -xvpzf /backup.tgz -C / |
{{{#!wiki note Se il backup è stato creato con '''--selinux''', è indispensabile includerlo anche nel comando di ripristino, dopo le opzioni di compressione e '''f <file>'''. |
| Linea 129: | Linea 152: |
| Or if you used bz2; | = Backup attraverso la rete = |
| Linea 131: | Linea 154: |
| {{{ tar -xvpjf backup.tar.bz2 -C / |
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 |
| Linea 135: | Linea 174: |
| The x option tells tar to extract the file. The -C <directory> option tells tar to change to a specific directory ( / in this example ) before extracting. attachment:IconsPage/IconWarning3.png WARNING: this will overwrite every single file on your partition with the one in the archive! Just hit enter/return/your brother/whatever and watch the fireworks. Again, this might take a while. When it is done, you have a fully restored Ubuntu system! Just make sure that, before you do anything else, you re-create the directories were excluded ( /proc, /lost+found, /mnt, /sys, etc.). {{{ mkdir /proc /lost+found /mnt /sys |
{{{#!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. |
| Linea 145: | Linea 178: |
| And when you reboot, everything should be the way it was when you made the backup! | 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. |
| Linea 147: | Linea 180: |
| === GRUB restore === | = Programmare il backup con Cron = |
| Linea 149: | Linea 182: |
| Now, if you want to move your system to a new harddisk or if you did something nasty to your GRUB (like, say, install Windows), You'll also need to reinstall GRUB. There are several very good howto's on how to do that here on this forum, so i'm not going to reinvent the wheel. Instead, take a look [http://www.ubuntuforums.org/showthread.php?t=24113&highlight=grub+restore here] (forum) or here: RecoveringUbuntuAfterInstallingWindows |
L'esecuzione di queste operazioni può essere programmata e resa automatica con '''cron'''. Per maggiori informazioni, consultare [[AmministrazioneSistema/Cron|questa guida]]. |
| Linea 152: | Linea 184: |
| On the forum thread, there are a couple of methods proposed. I personally recommend the second one, posted by remmelt, since that has always worked for me. | = Ulteriori risorse = |
| Linea 154: | Linea 186: |
| Well that's it! I hope it was helpful! | * [[Ubuntu:BackupYourSystem|Documento originale]] * [[https://it.wikipedia.org/wiki/Tar_(software)|Tar (wikipedia)]] * [[AmministrazioneSistema/FormatiDiCompressione|Formati di compressione]] |
| Linea 156: | Linea 190: |
| == Other Methods == You might also want to check out these backup programs which will help you to make automated backups of your system: * [http://www.partimage.org/ Partimage] * [http://www.mondorescue.org/ Mondo Rescue] CategoryDocumentation CategoryCleanup See the full discussion in this thread on the Ubuntu forums. http://www.ubuntuforums.org/showthread.php?t=70566 |
---- CategoryAmministrazione |
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.
Spostarsi nella directory o partizione di destinazione del backup, digitando in un terminale il comando:
cd `/directory_destinazione_backup`
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.
Copiare il file di backup nella directory /.
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
Premere Invio per avviare il ripristino.
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.
