Jump to content

System backup (Italiano)

From ArchWiki
Stato della traduzioneQuesto articolo è la versione tradotta di System backup. Data dell'ultima traduzione: 2026-02-13. Se ci sono cambiamenti nella versione inglese, è possibile dare una mano a sincronizzarne la traduzione.

Da Wikipedia:

Con backup, nella sicurezza informatica, si indica un processo di disaster recovery ovvero, in particolare, la messa in sicurezza delle informazioni di un sistema informatico attraverso la creazione di ridondanza delle informazioni stesse (una o più copie di riserva dei dati), da utilizzare come recupero (ripristino) dei dati stessi in caso di eventi malevoli accidentali o intenzionali o semplice manutenzione del sistema.

Un metodo comune e generalmente efficace è quello di seguire la strategia 3-2-1:

  • mantenere tre copie dei propri dati;
  • usare due differenti tipi di supporto di memorizzazione;
  • conservare una copia fuori sede.

Usare gli snapshot Btrfs

Si veda Btrfs#Snapshot, #Snapshot e partizione /boot e Snapper.

Usare gli snapshot LVM

Si veda LVM#Snapshot, Create root filesystem snapshots with LVM e #Snapshot e partizione /boot.

Usare rsync

Si veda rsync#Come strumento di backup.

Usare tar

Si veda Backup completo del sistema con tar.

Usare SquashFS

Si veda Backup completo del sistema con SquashFS.

Nota SquashFS non supporta le ACL.

Backup avviabile

Avere un backup avviabile può essere utile nel caso in cui il file system si corrompa o se un aggiornamento compromette il sistema. Il backup può anche essere utilizzato come ambiente di prova per gli aggiornamenti, abilitando ad esempio il repository testing, ecc. Se il sistema è stato trasferito su una partizione o un disco differente e si desideri avviarlo, il processo è semplice: basta aggiornare il file /etc/fstab del backup e il file di configurazione del boot loader.

Questa sezione presuppone che sia stato eseguito il backup del sistema su un altro disco o partizione, che l'attuale boot loader funzioni correttamente e che si desideri poter avviare anche il backup.

Aggiornare l'fstab

Senza riavviare, modificare il file fstab del backup commentando o rimuovendo ogni voce esistente. Aggiungere una voce per la partizione che contiene il backup come nell'esempio seguente:

/dev/sdaX    /             ext4      defaults                 0   1

Ricordarsi di utilizzare il nome del dispositivo e il tipo di file system corretti.

Aggiornamento del file di configurazione del boot loader

Per Syslinux è sufficiente duplicare la voce corrente, modificando il puntatore affinché faccia riferimento a un disco o a una partizione differente.

Suggerimento Invece di modificare syslinux.cfg, è possibile editare temporaneamente il menu durante l'avvio. Quando appare il menu, premendo il tasto Tab si possono cambiare le voci pertinenti. Le partizioni vengono conteggiate a partire da uno, i dischi a partire da zero.

Per GRUB si raccomanda di rigenerare automaticamente il file di configurazione principale. Se si desidera installare ex novo tutti i file di GRUB in una posizione diversa da /boot, come ad esempio /mnt/newroot/boot, è necessario utilizzare il flag --boot-directory.

È inoltre necessario verificare la nuova voce di menu in /boot/grub/grub.cfg. Bisogna assicurarsi che l'UUID corrisponda alla nuova partizione, altrimenti il sistema potrebbe ancora avviare quello vecchio. L'UUID di una partizione può essere individuato con lsblk:

$ lsblk -no NAME,UUID /dev/sdXY

dove /dev/sdXY è la partizione desiderata (es. /dev/sdb3). Per elencare gli UUID delle partizioni che GRUB ritiene di poter avviare, si può utilizzare grep:

# grep UUID= /boot/grub/grub.cfg

Primo avvio

Riavviare il computer e selezionare la voce corretta nel boot loader. Questo caricherà il sistema per la prima volta. Tutte le periferiche dovrebbero essere rilevate e le cartelle vuote in / verranno popolate.

Ora è possibile modificare nuovamente /etc/fstab per aggiungere le partizioni e i punti di montaggio precedentemente rimossi.

Snapshot e partizione /boot

Se il file system supporta gli snapshot (ad es. LVM o Btrfs), questi molto probabilmente escluderanno la partizione /boot o la partizione ESP.

È possibile copiare automaticamente la partizione di boot nella partizione di root in occasione di un aggiornamento del kernel tramite un hook di pacman (assicurandosi che il file dell'hook sia di proprietà di root):

/etc/pacman.d/hooks/55-bootbackup_pre.hook
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Path
Target = usr/lib/modules/*/vmlinuz

[Action]
Depends = rsync
Description = Backing up pre /boot...
When = PreTransaction
Exec = /usr/bin/bash -c 'rsync -a --mkpath --delete /boot/ "/.bootbackup/$(date +%Y_%m_%d_%H.%M.%S)_pre"/'
/etc/pacman.d/hooks/95-bootbackup_post.hook
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Path
Target = usr/lib/modules/*/vmlinuz

[Action]
Depends = rsync
Description = Backing up post /boot...
When = PostTransaction
Exec = /usr/bin/bash -c 'rsync -a --mkpath --delete /boot/ "/.bootbackup/$(date +%Y_%m_%d_%H.%M.%S)_post"/'

Automazione

I backup creati solo manualmente sono raramente aggiornati quando se ne presenta la necessità. Pertanto, si consiglia di impostare un processo automatizzato per garantire che le procedure di backup siano eseguite regolarmente. Le soluzioni più comuni sono fornite da systemd/Timers e cron.

Per un backup locale dell'intero sistema che richieda l'accesso in lettura a tutti i file, il timer e il servizio systemd seguenti possono essere utili come modello per i processi di backup automatizzati.

Per utilizzare un'unità timer, abilitarla e avviarla come qualsiasi altra unità.

/etc/systemd/system/backup.timer
[Unit]
Description=Timer for backups

[Timer]
OnCalendar=weekly
Persistent=true
Unit=backup.service

[Install]
WantedBy=timers.target

L'esempio seguente è configurato per l'esecuzione con i permessi minimi necessari, impedendo al contempo modifiche da parte degli utenti normali per una maggiore sicurezza.

Si noti che questo esempio bloccherà il processo di spegnimento qualora venisse avviato mentre il backup è in esecuzione. Ciò garantisce che il backup non venga interrotto, ma può causare un ritardo durante lo spegnimento o il riavvio se è necessario salvare molti nuovi file.

/etc/systemd/system/backup.service
[Unit]
Description=Backup system

[Service]
Type=simple
User=backupuser

AmbientCapabilities=CAP_DAC_READ_SEARCH
CapabilityBoundingSet=CAP_DAC_READ_SEARCH
DevicePolicy=closed
LockPersonality=yes
MemoryDenyWriteExecute=yes
NoNewPrivileges=yes
PrivateDevices=yes
PrivateTmp=yes
ProtectClock=yes
ProtectControlGroups=yes
ProtectHome=read-only
ProtectHostname=yes
ProtectKernelLogs=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
ProtectProc=invisible
ProtectSystem=full
RemoveIPC=yes
RestrictAddressFamilies=AF_UNIX
RestrictNamespaces=yes
RestrictRealtime=yes
RestrictSUIDSGID=yes
SystemCallFilter=@system-service
UMask=7007

ExecStart=/usr/local/bin/backup.sh
ExecStop=bash -c 'if [ -n "$MAINPID" ]; then tail --pid="$MAINPID" -f /dev/null; fi'

CAP_DAC_READ_SEARCH imposta la capability che consente di bypassare i controlli dei permessi di lettura dei file nel file system; in questo modo, tutti i file nel sistema risulteranno accessibili senza richiedere i permessi di root.

Per i backup remoti, è consentito l'uso di protocolli di rete:

RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6