Backup

Il backup è l’unica procedura che consenta di ripristinare una macchina in caso di disastro. Il sistema gestisce due tipi di backup:

  • backup della configurazione
  • backup dei dati

Il backup della configurazione contiene solo i file di configurazione del sistema. Lo scopo di questo tipo di backup è ripristinare rapidamente una macchina in caso di disaster recovery. Quando la macchina è funzionate, è possibile eseguire un ripristino completo dei dati anche se la macchina è già in produzione.

Il backup dei dati si abilita installando il modulo «Backup» e, per impostazione predefinita, contiene tutti i dati memorizzati nel sistema (home dell’utente, cartelle condivise, e-mail, ecc.). Il backup singolo viene eseguito una volta al giorno e può essere completo od incrementale su base settimanale. Questo backup contiene anche l’archivio del backup di configurazione. È possibile configurare più backup per salvare dati diversi a intervalli diversi.

Backup configurazione

Dalla pagina Backup (configurazione) è possibile salvare, scaricare, eseguire l’upload o ripristinare la configurazione del sistema

Inoltre, un’attività automatizzata viene eseguita ogni notte alle 00.15 e crea un nuovo archivio, /var/lib/nethserver/backup/backup-config.tar.xz, se la configurazione è stata modificata nelle ultime 24 ore. E” possibile specificare il numero di Backup automatici da mantenere dal pannello Backup (configurazione)> Configura.

L’elenco dei moduli installati è incluso nell’archivio di backup. La procedura di ripristino consente di scaricare e installare automaticamente i moduli elencati.

Personalizzazione backup configurazione

Nella maggior parte dei casi non è necessario modificare il backup della configurazione. Ma può essere utile, ad esempio, se si è aggiunta una configurazione custom per httpd. In questo caso è possibile aggiungere il percorso del file che contiene la personalizzazione al backup della configurazione.

Inclusione

Se si desidera includere una directory o un file nel backup della configurazione, aggiungere una linea al file /etc/backup-config.d/custom.include.

Ad esempio, per eseguire il backup del file /etc/httpd/conf.d/mycustom.conf, aggiungere la riga:

/etc/httpd/conf.d/mycustom.conf

Non aggiungere mai directory e file voluminosi al backup della configurazione.

Esclusione

Se si desidera escludere una directory o un file dal backup della configurazione, aggiungere una riga al file /etc/backup-config.d/custom.exclude.

Avvertimento

Assicurarsi di non lasciare linee vuote nei file modificati. La sintassi del backup della configurazione supporta solo percorsi file e directory semplici.

Backup dati

Il backup dei dati può essere eseguito utilizzando diversi engine:

Quando si seleziona un engine, l’amministratore di sistema deve valutare attentamente molteplici aspetti:

  • Compressione: i dati vengono compressi sulla destinazione, l’utilizzo del disco può variare in funzione dell’efficienza della compressione, che dipende anche dal set di dati
  • Deduplicazione: invece di comprimere i file, i dati vengono suddivisi in blocchi e viene conservata solo una copia di ciascun blocco. L’efficienza dipende molto dal set di dati
  • Crittografia: i dati salvati nella memoria di destinazione sono crittografati. Di solito i dati vengono crittografati prima del trasferimento
  • Dimensione: lo spazio utilizzato nella destinazione per ciascun backup può essere inferiore o uguale al set di dati originale. Quando si utilizzano engine senza supporto per la compressione, lo spazio sulla destinazione dovrebbe sempre essere più grande rispetto a quello occupato nella sorgente
  • Conservazione: la politica che fissa la quantità di tempo in cui un set di dati rimarrà disponibile per il ripristino
  • Integrità: è la capacità dell’engine di verificare se il backup eseguito è valido in caso di ripristino
  • Tipo: un backup può essere completo, incrementale o basato su snapshot (sempre incrementale):
    • completo: tutti i file vengono copiati nella destinazione ogni volta
    • incrementale: confronta i dati con l’ultimo backup completo e copia solo gli elementi modificati o aggiunti. Il backup completo e tutti gli incrementali intermedi sono necessari per il processo di ripristino. È richiesto che venga eseguito regolarmente un backup completo.
    • snapshot: crea un backup completo solo la prima volta, successivamente crea solo backup differenziali. Le istantanee possono essere eliminate e consolidate ed è necessario un solo backup completo
Engine Compressione Deduplicazione Crittografia Integrità Tipo
duplicity No No completo / incrementale
restic No snapshot
rsync No Parziale No No snapshot

L’amministratore può pianificare più backup utilizzando diversi engine e destinazioni. Una buona politica potrebbe essere quella di creare un backup settimanale su una destinazione locale utilizzando Duplicity e pianificare un ulteriore backup giornaliero su uno storage cloud usando Restic.

Quando si configurano più backup è opportuno rammentare due regole d’oro:

  • utilizzare sempre destinazioni diverse per ciascun engine
  • evitare la pianificazione di backup simultanei, ogni backup deve essere eseguito quando il precedente è stato completato

Nota

Mentre un backup singolo può essere configurato e ripristinato attraverso il Server Manager, i backup multipli devono essere configurati utilizzando il nuovo Server Manager (Cockpit).

Backend di archiviazione

Supportati da tutti gli engine:

  • CIFS: cartella condivisa Windows, disponibile su tutti i NAS (Network Attached Storage). Utilizza credenziali di accesso come: MioUtente,domain=miodominio.com
  • NFS: cartella condivisa Linux, disponibile su tutti i NAS, solitamente più veloce di CIFS
  • WebDAV: disponibile su molti server NAS e remoti (utilizzare come destinazione WebDAV un server con un certificato SSL valido, altrimenti il sistema non riuscirà a montare il filesystem)
  • USB: disco collegato ad una porta USB/SATA locale

Supportati da restic ed rsync

  • SFTP: SSH File Transfer Protocol

Supportati solo da restic

  • Amazon S3 (o altro server compatibile come Minio)
  • Backblaze B2

Engine

Duplicity

Duplicity è l’engine di backup predefinito per NethServer. Ha un buon algoritmo di compressione che riduce in modo apprezzabile l’utilizzo della spazio sulla destinazione. Duplicity richiede un backup completo una volta alla settimana, quando il set di dati è molto grande il processo potrebbe richiedere più di 24 ore per essere completato. NethServer non implementa la crittografia per il backup se l’engine è Duplicity.

Backend di archiviazione supportati:

  • CIFS
  • NFS
  • USB
  • WebDAV (solo quando usato come backup singolo)

Nota

Il nome della directory di destinazione è basato sul nome host del server: in caso di modifica dell’FQDN, l’amministratore dovrà occuparsi di copiare/spostare i dati di backup dalla vecchia directory a quella nuova.

Restic

Restic implementa un backup basato su snapshot e sempre crittografato. Supporta la deduplicazione e può eseguire il backup sui servizi cloud. Poiché Restic richiede solo un backup completo, tutte le esecuzioni successive alla prima dovrebbero essere veloci e potrebbero essere programmate più volte al giorno.

Backend di archiviazione supportati:

  • CIFS
  • NFS
  • USB
  • WebDAV (solo quando usato come backup singolo)
  • SFTP (SSH File Transfer Protocol)
  • Amazon S3 (o altro server compatibile come Minio)
  • Backblaze B2
  • Restic REST server

Rsync

L’engine di backup stile Time machine utilizza: index: rsync`. Dopo il primo backup completo, copia solo i file modificati o nuovi utilizzando un effiecente sistema di trasferimento incrementale. Sulla destinazione, la deduplicazione parziale viene ottenuta attraverso l’uso di link fisici. Se la directory di destinazione del backup è piena, i backup più vecchi vengono automaticamente eliminati per liberare spazio.

Backend di archiviazione supportati:

  • CIFS
  • NFS
  • USB
  • WebDAV (solo quando usato come backup singolo)
  • SFTP (SSH File Transfer Protocol)

Rsync non supporta la crittografia né la compressione sulla destinazione. Durante il trasferimento dei dati, SFTP assicura la crittografia e i dati vengono compressi per ridurre al minimo l’utilizzo della banda utilizzata.

Nota

Quando si utilizza l’engine rsync, assicurarsi che il backend di destinazione supporti link simbolici e fisici. Si rammenta che NethServer non supporta collegamenti su condivisioni Samba per implicazioni di sicurezza. Inoltre i link simbolici non sono supportati su WebDAV.

Esecuzione da riga di comando

Per lanciare un backup da riga di comando, utilizzare:

backup-data -b <name>

in cui name è il nome del backup che si desidera lanciare.

Nota

Di default il nome del primo backup configurato su NethServer è backup-data

Personalizzazione backup dati

In caso di installazione di software aggiuntivi, potrebbe esser necessario modificare la lista delle directory e dei file inclusi (o esclusi) dal backup.

Inclusioni

Se si desidera includere una directory o un file nel backup dei dati, aggiungere una linea al file /etc/backup-data.d/custom.include.

Ad esempio, per eseguire il backup di un software installato nella directory /opt, aggiungere la linea:

/opt/mysoftware

La stessa sintassi si applica al backup della configurazione. Le modifiche dovranno essere incluse all’interno del file /etc/backup-config.d/custom.include.

Esclusioni

Se si desidera escludere una directory o un file dal backup dei dati, aggiungere una linea al file /etc/backup-data.d/custom.exclude.

Ad esempio, per escludere dal backup tutte le directory chiamate Download, aggiungere la linea:

**Download**

Per escludere una casella di posta test, aggiungere la riga:

/var/lib/nethserver/vmail/test/

La stessa sintassi si applica al backup della configurazione. Le modifiche dovrebbero essere fatte all’interno del file /etc/backup-config.d/custom.exclude.

Personalizzazione inclusioni ed esclusioni

Tutti i backup utilizzano la stessa configurazione, ma l’elenco dei file salvati ed esclusi può essere personalizzato utilizzando due file speciali:

  • /etc/backup-data/<name>.include
  • /etc/backup-data/<name>.exclude

In cui name è il nome del backup.

Entrambi i file sostituiranno il set di dati inclusi ed esclusi dal backup. La sintassi accettata è la stessa indicata nel paragrafo precedente.

Ad esempio, dato un backup chiamato mybackup1 creare i seguenti file:

  • /etc/backup-data/mybackup1.include
  • /etc/backup-data/mybackup1.exclude
Esempio

È possibile configurare un backup che includa solo i file della posta programmato ogni ora.

  1. Configurare il nuovo mymailbackup utilizzando l’interfaccia utente

  2. Creare un file include custom contenente solo la directory delle email:

    echo "/var/lib/nethserver/vmail" > /etc/backup-data/mymailbackup.include
    
  3. Creare un file exclude custom vuoto:

    touch /etc/backup-data/mymailbackup.exclude
    
  4. Applicare la configurazione:

    signal-event nethserver-backup-data-save mymailbackup
    

Avvertimento

Assicurarsi di non lasciare linee vuote nei file modificati.

Nota

Questo tipo di backup non può essere utilizzato in caso di disaster recovery.

Ripristino selettivo dei file

Assicurarsi che la destinazione del backup sia raggiungibile (ad esempio, il disco USB deve essere collegato).

Nella sezione Ripristino file è possibile cercare, selezionare e ripristinare una o più directory dal backup, navigando tutti i percorsi inclusi nel backup nell’albero grafico.

Per impostazione predefinita, viene mostrato l’albero del backup più recente. Se si desidera ripristinare un file da un backup precedente, selezionare la data di backup dal selettore Backup file.

Sono disponibili due opzioni in fase di ripristino:

  • Ripristina i file nel percorso originale, i file correnti nel filesystem vengono sovrascritti dai file ripristinati dal backup

  • Ripristina i file nel percorso originale ma i file ripristinati dal backup vengono spostati in una nuova directory (i file non vengono sovrascritti) in questo percorso:

    /complete/path/of/file_YYYY-MM-DD (YYYY-MM-DD is the date of restore)
    

Per utilizzare il campo di ricerca, è sufficiente inserire almeno 3 caratteri e la ricerca inizia automaticamente evidenziando le directory corrispondenti.

È possibile ripristinare le directory facendo clic sul pulsante Ripristina.

Nota

E” possibile effettuare una selezione multipla mantenendo premuto il tasto Ctrl.

Nota

L’interfaccia utente per il ripristino selettivo è disponibile solo per il backup denominato backup-dati.

Procedura da riga di comando

Tutti i dati sono sono posizionati nella directory /var/lib/nethserver/ :

  • Cartelle di posta: /var/lib/nethserver/vmail/<user>
  • Cartelle condivise: /var/lib/nethserver/ibay/<name>
  • Home utenti: /var/lib/nethserver/home/<user>

Per elencare i dati all’interno di un backup, utilizzare:

backup-data-list -b <name>

Per ripristinare tutti i dati nella posizione originale, utilizzare:

restore-data -b <name>

Per ripristinare un file o una directory, utilizzare:

restore-file -b <name> <position> <path>

Esempio, ripristinare un file alla versione di 15 giorni fa:

restore-file -b <name> -t 15D /tmp "/var/lib/nethserver/ibay/test/myfile"

L’opzione -t consente di specificare il numero di giorni (15 in questo scenario). Quando viene utilizzato con engine basati su snapshot, l’opzione -t richiede il nome dello snapshot da ripristinare.

Nota

Nel caso si utilizzi CIFS per accedere alla condivisione e il comando di restore non funzioni nel modo atteso, verificare che utente e password della condivisione di rete siano corretti. Se la coppia utente/password è sbagliata nel file /var/log/messages si troveranno degli errori di NT_STATUS_LOGON_FAILURE. Allo stesso tempo il comando backup-data-list non andrà a buon fine e uscirà immediatamente riportando degli errori.

Configurazione disco USB

Il miglior filesystem per dischi di backup USB è EXT3 (o EXT4). Il filesystem FAT è supportato ma non raccomandato, mentre NTFS non è supportato. EXT3 (o EXT4) è obbligatorio per l’engine rsync.

Per eseguire la formattazione, è necessario collegare il disco e identificarlo correttamente:

# dmesg | tail -20

Apr 15 16:20:43 mynethserver kernel: usb-storage: device found at 4
Apr 15 16:20:43 mynethserver kernel: usb-storage: waiting for device to settle before scanning
Apr 15 16:20:48 mynethserver kernel:   Vendor: WDC WD32  Model: 00BEVT-00ZCT0     Rev:
Apr 15 16:20:48 mynethserver kernel:   Type:   Direct-Access           ANSI SCSI revision: 02
Apr 15 16:20:49 mynethserver kernel: SCSI device sdc: 625142448 512-byte hdwr sectors (320073 MB)
Apr 15 16:20:49 mynethserver kernel: sdc: Write Protect is off
Apr 15 16:20:49 mynethserver kernel: sdc: Mode Sense: 34 00 00 00
Apr 15 16:20:49 mynethserver kernel: sdc: assuming drive cache: write through
Apr 15 16:20:49 mynethserver kernel: SCSI device sdc: 625142448 512-byte hdwr sectors (320073 MB)
Apr 15 16:20:49 mynethserver kernel: sdc: Write Protect is off
Apr 15 16:20:49 mynethserver kernel: sdc: Mode Sense: 34 00 00 00
Apr 15 16:20:49 mynethserver kernel: sdc: assuming drive cache: write through
Apr 15 16:20:49 mynethserver kernel:  sdc: sdc1
Apr 15 16:20:49 mynethserver kernel: sd 7:0:0:0: Attached scsi disk sdc
Apr 15 16:20:49 mynethserver kernel: sd 7:0:0:0: Attached scsi generic sg3 type 0
Apr 15 16:20:49 mynethserver kernel: usb-storage: device scan complete

Un altro buon comando da utilizzare può essere:

lsblk -io KNAME,TYPE,SIZE,MODEL

In questo esempio, il disco è stato riconosciuto come device sdc.

  • Creare una unica partizione Linux sull’intero disco sdc:

    echo "0," | sfdisk /dev/sdc
    
  • Crea il filesystem sulla partizione sdc1 con un’etichetta denominata backup. Il filesystem dovrebbe essere ottimizzato per l’engine di backup usato: rsync e restic richiedono molti inode, duplicity ha prestazioni migliori su file system ottimizzati per file di grandi dimensioni.

    Per duplicity usare:

    mke2fs -v -T largefile4 -j /dev/sdc1 -L backup
    

    Per rsync e restic usare:

    mkfs.ext4 -v /dev/sdc1 -L backup -E lazy_itable_init
    
  • Scollegare e ricollegare il disco USB:

    E’ possibile utilizzare il comando seguente per simulare il collegamento del disco:

    blockdev --rereadpt /dev/sdc
    
  • A questo punto la voce backup sarà selezionabile dalla pagina Backup (data).

Disaster recovery

Il sistema viene ripristinato in due fasi: prima la configurazione, poi i dati. Subito dopo il ripristino della configurazione, il sistema è pronto per essere utilizzato se sono installati i pacchetti corretti. È possibile installare pacchetti aggiuntivi prima o dopo il ripristino. Ad esempio, se il server di posta è installato, il sistema può inviare e ricevere posta.

Altre configurazioni ripristinate:

  • Utenti e gruppi
  • Certificati SSL

Avvertimento

Non ripristinare un backup di configurazione proveniente da una vecchia minor version in una versione più recente. Il backup dovrebbe provenire da un NethServer avente la stessa versione del sistema operativo della nuova installazione.

Es: evitare di ripristinare un backup della configurazione proveniente da una installazione 7.4.1708 in un più recente sistema 7.6.1810, questo potrebbe introdurre derive inattese.

I passi da eseguire sono:

  1. Installare la nuova macchina (fare riferimento alla sezione Installazione), accedere al Server Manager e seguire la procedura di prima configurazione per completare la configurazione di base del sistema

  2. Assicurarsi che NethServer sia in grado di accedere ad internet e risolvere correttamente i nomi con il DNS pubblico

  3. Installare tutti gli aggiornamenti core disponibili dal Software Center

  4. Ripristinare il backup della configurazione utilizzando il pannello Backup (configurazione)

  5. Se un avviso lo richiede, riconfigurare le interfacce di rete. Vedi Assegnamento delle interfacce di rete

  6. Verificare che la macchina sia funzionante

  7. Ripristinare il backup dei dati eseguendo dalla console

    restore-data -b <name>
    

Si noti che il disater recovery dovrebbe essere sempre eseguito da un supporto locale (ad esempio NFS o USB) per velocizzare il processo.

Nota

La password di root/admin non viene ripristinata, verrà mantenuta quella impostata nel nuovo sistema.

Assegnamento delle interfacce di rete

Se la configurazione contiene una scheda di rete assente, le pagine Dashboard, Backup (configurazione) > Ripristino e Network mostrano un avviso. Questo può accadere per esempio nei seguenti casi:

  • dopo il ripristino del backup della configurazione su un nuovo hardware
  • una o più schede di rete sono state sostituite
  • i dischi del sistema sono stati spostati su una nuova macchina

L’avviso porta a una pagina che elenca le schede di rete fisiche presenti nel sistema, evidenziando quelle che non hanno un ruolo assegnato. Per ogni scheda di questo tipo, un menù a discesa mostra i ruoli da assegnare.

Per esempio, se una scheda con ruolo orange è stata sostituita, il menù a discesa elencherà un elemento orange in corrispondenza della nuova scheda di rete.

Lo stesso accade se la vecchia scheda era il componente di una interfaccia logica, come un bridge o un bond.

Selezionando un elemento dal menù a discesa, le impostazioni del ruolo sono trasferiti alla nuova scheda.

Premendo il pulsante Salva le modifiche vengono applicate.

Avvertimento

Assegnare con attenzione i ruoli alle nuove interfacce. Un errore può portare ad un sistema isolato dalla rete.

Nel caso in cui fosse il ruolo green a mancare, in fase di avvio del sistema una procedura automatica tenterà di ripristinare la configurazione di rete essenziale per consentire di accedere nuovamente al Server Manager.