Skip to topic | Skip to bottom
Home
Web attivi: Reteisi | Pmb
user: TWikiGuest
Registrazione | Mappa | Cambiamenti | Indice | Ricerca | Vai | Calcolatrice

Sei qui: Reteisi > BackupDeiDati



Start of topic | Skip to actions

Backup dei dati con procedura automatizzata

Avere una copia di backup dei dati è essenziale perché può sempre capitare che un disco si rovini, oppure che l'utente cabcelli involontariamente uno o più file che invece gli risultano poi utili o addirittura indispensabili. Mi è capitato spesso di essere assediato da un collega che non trovava più intere cartelle: col sistema di drag 'n drop di windows aveva inavvertitamente spostato intere cartelle chissà dove. In questi casi un backup è davvero essenziale.

Quali dati?

Prima di tutto è importante definire quali sono i dati da salvare:
  • le cartelle home degli utenti
  • eventuali cartelle condivise tra più utenti (quelle delle classi, quelle di competenza dei docenti, etc...)
  • la cartella /etc per salvare le configurazioni
  • la cartella /var/www/http che contiene il sito della Intranet
  • etc...

Dove li salvo?

I dati possono essere salvati in automatico sul disco fisso del file server in una cartella qualsiasi, in una partizione abbastanza capiente da contenerli tutti, tipicamente /home/backup.
Fatto ciò è opportuno definire una share in /etc/samba/smb.conf, magari con la connessione automatica nello script di logon, in modo che un utente del gruppo admin possa all'occorrenza ripristinare i dati da qualsiasi client windows, senza dover per forza accedere al server direttamente o via ssh. In questo modo è molto più semplice e veloce ripristinare i dati, senza conoscere la password di root.

Script che automatizza la copia dei dati

La script è estremamente semplice, in quanto si limita ad utilizzare due comandi della bash. In particolare il comando cp e il comando chown.
Poniamo di avere le seguenti cartelle da copiare:
  • /home/alunni
  • /etc
  • /home/docenti
  • /home/admins
  • /home/dati
  • /home/classi
Per copiarle occorre scrivere in un file di testo i seguenti comandi:
cp -audR /home/alunni /home/backup/
cp -audR /etc /home/backup/
cp -audR /home/docenti /home/backup
cp -audR /home/admins /home/backup
cp -audR /home/dati /home/backup
cp -audR /home/classi /home/backup
Il comando cp ha molti argomenti utili, in particolare quelli usati sono:
  • -a (archive), che permette di copiare il file come archivio, senza modificarne i permessi
  • -u (update), che copia il file solo se più recente di quello che si trova eventualmente nella destinazione
  • -d (no dereference), che evita che vengano seguiti i link simbolici
  • -R (recursive), che copia ricorsivamente il contenuto della cartella e delle sottocartelle
Fatto ciò, affinché sia possibile per un altro utente -e non solo per root- ripristinare i dati in caso di necessità, è utile modificare il proprietario dei file e/o i permessi di accesso.
E' possibile utilizzare differenti politiche di sicurezza:
  • La cosa più semplice è modificare i permessi in 666 (cioé tutti possono leggere, scrivere e modificare il file). Ciò fa sì che:
    • non serve modificare il proprietario dei file, perché chiunque può ripristinarli all'occorrenza;
    • una volta ripristinati i file, questi possono essere immediatamente fruiti dal legittimo proprietario, ma ovviamente la sicurezza viene ridotta in quanto poi i file potrebbero essere letti da chiunque.
  • Una seconda possibilità è quella di modificare i permessi in 660 (solo il proprietario e il gruppo possono leggere, scrivere e modificare i file), e contemporaneamente modificare il proprietario, in particolare il gruppo, in admins, in modo che un utente facente parte del gruppo admins possa ripristinare i file in caso di necessità.
Concretamente i comandi per eseguire le cosa sopra accennate sono i seguenti:

Modificare i permessi in modo che tutti possano leggere, scrivere e modificare i files
chmod 666 -R /home/backup/admins/*
chmod 666 -R /home/backup/alunni/*
chmod 666 -R /home/backup/docenti/*
chmod 666 -R /home/backup/dati/*
chmod 666 -R /home/backup/classi/*
Modificare i permessi in modo che possano leggere, scrivere e modificare i files solo il proprietario e il gruppo
chmod 660 -R /home/backup/admins/*
chmod 660 -R /home/backup/alunni/*
chmod 660 -R /home/backup/docenti/*
chmod 660 -R /home/backup/dati/*
chmod 660 -R /home/backup/classi/*
Modificare il gruppo ma non il proprietario
chown :admins -R /home/backup/admins/*
chown :admins -R /home/backup/alunni/*
chown :admins -R /home/backup/docenti/*
chown :admins -R /home/backup/dati/*
chown :admins -R /home/backup/classi/*
In questo caso i due punti prima di admins fanno sì che il proprietario non venga modificato, mentre il gruppo sì. E ciò permette all'utente admins di utilizzare i files, ma anche al legittimo proprietario di riutilizzarli immediatamente. A ciò c'è una limitazione: può essere applicata solo nel caso delle cartelle home. Nel caso delle cartelle comuni occorre modificare manualmente i permessi per far sì che tutti gli utenti che ne hanno diritto possano accedere.

Ecco infine la script completa utilizzat presso una delle nostre scuole:
cp -audR /home/alunni /home/backup
cp -audR /etc/ /home/backup
cp -audR /home/docenti /home/backup
cp -audR /home/admins /home/backup
cp -audR /home/dati /home/backup
cp -audR /home/classi /home/backup
chmod 660 -R /home/backup/
chown -R :admins /home/backup/
Scriviamo il file di testo e diamogli un nome significativo, per esempio copia. Una volta scritto il file con le istruzioni per la copia e la modifica dei permessi dei file, è necessario copiare il file in una cartella appropriata, tipicamente /usr/sbin e renderla eseguibile:
root@srv-bernareggio root # mv copia /usr/sbin
root@srv-bernareggio root # chmod 700 /usr/sbin/copia

Automatizzare la procedura

L'ultima operazione da eseguire è quella di far sì che la copia dei file avvenga ad intervalli regolari senza intervento da parte dell'amministratore. Per fare ciò ci si può avvalere del programma cron o di un suo frontend grafico, per esempio Task scheduler. Per esempio in una delle nostre scuole il task viene eseguito ogni giorno in orario notturno.

Effettuare un backup su supporto esterno

La procedura analizzata finora è comoda perché permette un rapido ripristino di dati in caso di errore da parte dell'utente. Tuttavia non permette il salvataggio su supporto esterno, essenziale in caso di rottura del disco rigido o altri danni all'hardware, compreso il furto o l'incendio.
Per maggiore sicurezza è opportuno pertanto eseguire con regolarità anche un backup su supporto esterno. Vi sono varie possibilità:
  • inizialmente avevamo pensato a dei backup su DVD-RAM. La cosa è fattibile, ma ha alcune limitazioni, dovute essenzialmente al limitato spazio del supporto dvd, limitato a 4,7 gb. Inoltre tale soluzione costringe ad accedere fisicamente al server o comunque ad una macchina dotata di un masterizzatore DVD-RAM compatibile.
  • Una soluzione ottimale, sia per i costi che per la praticità, consiste nell'utilizzare un disco rigido esterno con collegamento USB 2.0 (o high speed). Questa soluzione, oltre ad essere economica (un disco rigido esterno da 80 gb, compreso il guscio e il collegamento USB HS costa al momento attuale circa 120 euro), è molto comoda perché è sufficiente che un utente del gruppo admins colleghi il disco ad un computer della rete (ormai tutti i pc sono dotati di porte USB, molti anche del tipo 2.0) e faccia una copia fisica della cartella backup nel disco rigido esterno.

-- FabioFrittoli - 29 Jul 2021

Reteisi.BackupDeiDati r1.1 - 12 Jun 2021 - 06:45 - TWikiGuest
Copyright © 1999-2006 degli autori degli articoli. Tutto il materiale presente su questa piattaforma collaborativa è di proprietà di chi l'ha prodotto. Idee, richieste, problemi relativi a TWiki? Invia feedback