## page was renamed from BackupDelSistema/Rsnapshot
#format wiki
#LANGUAGE it
<
>
<>
<>
= Introduzione =
'''rsnapshot''' è un'applicazione in grado di effettuare il backup differenziale di porzioni di file system. Sfruttando [[http://samba.anu.edu.au/rsync/|rsync]] e gli [[http://openskills.info/infobox.php?ID=60|hard link]], è in grado di conservare diverse copie di backup, realizzate in diversi istanti di tempo, minimizzando la quantità di dati trasferiti e lo spazio occupato nel disco. Se utilizzato in concomitanza con [[InternetRete/ConfigurazioneRete/OpenSsh|ssh]], può effettuare il backup anche di sistemi remoti.
= Prerequisiti =
{{{#!wiki important
'''rsnapshot''' deve essere avviato specificando il tipo di backup che si intende utilizzare.
}}}
Prima di procedere con la configurazione di rsnapshot, assicurarsi di:
* Avere accesso con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]], per modificare il file di configurazione principale e per l'esecuzione dei comandi.
* Disporre di spazio su disco sufficiente nella directory di destinazione (`rsnapshot_root`) per ospitare i backup, tenendo conto delle direttive di retention impostate.
* Se si intendono effettuare backup di sistemi remoti [[InternetRete/DesktopRemoto/OpenSsh|SSH]] deve essere configurato e funzionante tra i sistemi coinvolti, preferibilmente con autenticazione basata su chiavi per automatizzare le operazioni.
* Comprendere le basi dell'utilizzo di un [[Ufficio/EditorDiTesto|editor di testo]] e del [[AmministrazioneSistema/Terminale|terminale]].
= Installazione =
[[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto [[apt://rsnapshot | rsnapshot]].
= Configurazione =
Per configurare '''rsnapshot''' è necessario aprire il file `/etc/rsnapshot.conf` con i [[AmministrazioneSistema/PrivilegiDiAmministrazione|privilegi di amministrazione]] e un [[Ufficio/EditorDiTesto|editor di testo]].
== Definizione configurazione ==
Ogni riga del file di configurazione deve contenere elementi separati dal carattere '''Tab''' e non deve contenere spazi.
{{{#!wiki important
Non è quindi consigliabile copiare e incollare le seguenti istruzioni.
}}}
* '''Direttiva `rsnapshot_root`''': Specifica la cartella di destinazione principale per tutti i backup.
{{{
rsnapshot_root /var/cache/rsnapshot/
}}}
* '''Direttive `retain`''': Definiscono le politiche di conservazione dei backup. Le copie vengono mantenute per periodi specifici.<
>Supponendo di effettuare il backup quotidianamente e di voler conservare le seguenti copie:
* backup giornaliero dei 7 giorni precedenti;
* backup settimanale delle 4 settimane precedenti;
* backup mensile dei 6 mesi precedenti.
Le direttive di configurazione per questa pianificazione sono:{{{
retain daily 7
retain weekly 4
retain monthly 6
}}}È importante che i backup siano specificati in ordine decrescente di frequenza di esecuzione prevista (ovvero va specificato per primo il backup che sarà eseguito più spesso).
{{{#!wiki note
I nomi `daily`, `weekly`, `monthly`, ecc., indicano soltanto il nome delle cartelle di backup che '''rsnapshot''' crea quando viene eseguito con quel nome.<
>È possibile assegnare qualsiasi nome alfanumerico (es.: `alpha`, `beta`, `gamma`).<
>La reale frequenza di esecuzione dei backup non si programma in `/etc/rsnapshot.conf` ma dipende da come viene pianificata l'esecuzione dell'utility rsnapshot, [[#Pianificazione_delle_operazioni_con_cron|per esempio con cron]].
}}}
* '''Direttive `backup`''': Definiscono le cartelle locali o remote da sottoporre a backup.<
>Per conservare i file contenuti nelle cartelle `/home`, `/etc` e `/usr/local` nella cartella `localhost`, aggiungere le seguenti istruzioni:{{{
backup /home/ localhost/
backup /etc/ localhost/
backup /usr/local/ localhost/
}}}Se si intende fare il backup di porzioni di file system di un sistema remoto, è possibile utilizzare il protocollo [[InternetRete/DesktopRemoto/OpenSsh|ssh]], come nel seguente esempio:{{{
backup root@example.com:/home/ example.com/
}}}
* '''Direttive `exclude`''': Permettono di escludere file o cartelle specifiche dal backup tramite [[http://en.wikipedia.org/wiki/Pattern_matching|pattern matching]].
Per escludere tutti i file `.mp3` o il contenuto della cartella `.cache` dal backup, aggiungere le seguenti direttive:{{{
exclude *.mp3
exclude .cache
}}}
== Verifica della configurazione ==
Dopo aver apportato le modifiche, è possibile testare il file di configurazione digitando in un [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
rsnapshot configtest
}}}
##= Automatizzare il backup =
##
##È possibile effettuare il backup di vari servizi mediante degli script controllati da '''rsnapshot'''.
##
##Supponendo di voler effetttuare il backup di un database [[Server/MySql|MySql]], si realizzi uno script, da inserire ##in un nuovo file (es. `/root/scripts/backupmysql.sh`), simile al seguente:
##{{{
## #!/bin/bash
##mysqldump nomedatabase --user=root --password=passworddiroot > dump.sql
##}}}
##Dopo aver impostato il nome del database in «nomedatabase» e dopo aver impostato le opzioni «user» e «password» con ##il nome utente desiderato e la relativa password, è possibile richiamare lo script a partire dal file di ##configurazione sopra citato con un'istruzione simile alla seguente:
##{{{
##backup_script /root/scripts/backupmysql.sh localhost/mysql/
##}}}
##'''rsnapshot''' lancerà lo script e sposterà nella cartella `localhost/mysql` tutti i file di output prodotti nella cartella corrente.
<>
== Pianificazione delle operazioni con cron ==
Affinchè '''rsnaphost''' venga eseguito ad intervalli regolari, occorre configurare opportunamente [[AmministrazioneSistema/Cron|cron]].
Quello che segue è un esempio di configurazione:
* '''backup giornaliero''' alle ore 00:00;
* '''backup settimanale''' la domenica alle ore 6:00;
* '''backup mensile''' ogni primo del mese alle 12:00.
Quella che segue è la pianificazione adatta al precedente esempio:{{{
m h dom mon dow user command
0 0 * * * root /usr/bin/rsnapshot daily
0 6 * * 0 root /usr/bin/rsnapshot weekly
0 12 1 * * root /usr/bin/rsnapshot monthly
}}}
= Avvio del programma =
Per avviare il tipo di backup desiderato digitare in un [[AmministrazioneSistema/Terminale|terminale]] il relativo comando:
* '''backup giornaliero''':{{{
sudo rsnapshot daily
}}}
* '''backup settimanale''':{{{
sudo rsnapshot weekly
}}}
* '''backup mensile''':{{{
sudo rsnapshot monthly
}}}
Aggiungendo l'opzione '''-t''' al comando è possibile verificarne il corretto funzionamento. Quello che segue è un esempio:{{{
sudo rsnapshot -t daily
}}}
Il risultato del precedente comando sarà simile al seguente:{{{
echo 29059 > /var/run/rsnapshot.pid
mkdir -m 0755 -p /var/cache/rsnapshot/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
--exclude=*.mp3 /home /var/cache/rsnapshot/daily.0/localhost/
mkdir -m 0755 -p /var/cache/rsnapshot/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
--exclude=*.mp3 /etc /var/cache/rsnapshot/daily.0/localhost/
mkdir -m 0755 -p /var/cache/rsnapshot/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
--exclude=*.mp3 /usr/local /var/cache/rsnapshot/daily.0/localhost/
mkdir -m 0755 -p /var/cache/rsnapshot/daily.0/
/usr/bin/rsync -a --delete --numeric-ids --relative --delete-excluded \
--exclude=*.mp3 --rsh=/usr/bin/ssh root@example.com:/home \
/var/cache/rsnapshot/daily.0/example.com
mkdir -m 0755 -p /var/cache/rsnapshot/daily.0/localhost/
mkdir -m 0755 -p /var/cache/rsnapshot/tmp/
cd /var/cache/rsnapshot/tmp/
/root/scripts/backupmysql.sh
cd /home/albe/
sync_if_different("/var/cache/rsnapshot/tmp/", \
"/var/cache/rsnapshot/daily.0/localhost/mysql/")
touch /var/cache/rsnapshot/daily.0/
}}}
= Ripristino da un backup =
Il ripristino dei dati da un backup di '''rsnapshot''' è un'operazione semplice, in quanto i backup sono stored in una struttura di directory diretta e leggibile. Non è necessario utilizzare un comando specifico di `rsnapshot` per il ripristino, poiché i file sono accessibili direttamente.
Per ripristinare file o cartelle:
0. Individuare la copia di backup desiderata: I backup sono memorizzati da `rsnapshot_root` nella directory specificata (ad esempio, `/var/cache/rsnapshot/`). All'interno di questa directory si trovano le cartelle di backup denominate in base alle direttive `retain` (es. `daily.0`, `daily.1`, `weekly.0`, ecc.).
* `daily.0` rappresenta il backup più recente (quello del giorno corrente).
* `daily.1` rappresenta il backup del giorno precedente, e così via.
* `weekly.0` rappresenta il backup settimanale più recente.
Ad esempio, per accedere ai file del backup giornaliero più recente della cartella `/home` di localhost, il percorso sarà `/var/cache/rsnapshot/daily.0/localhost/home/`
0. Copiare i file nella posizione originale o in una nuova destinazione: Utilizzare un comando di copia standard (come `cp` o `rsync`) per copiare i file dalla directory di backup alla posizione desiderata sul file system. [[#Esempi|Esempi]]
0. Dopo il ripristino, è buona pratica verificare che i [[AmministrazioneSistema/PermessiFile|permessi e la proprietà]] dei file/cartelle che siano corretti, soprattutto se i dati vengono ripristinati con l'utente root. Per verificare, digitare in un [[AmministrazioneSistema/Terminale|terminale]] i seguenti comandi:{{{
sudo chown -R utente:gruppo /percorso/dei/file/ripristinati
sudo chmod -R 755 /percorso/dei/file/ripristinati (o permessi appropriati)
}}}Questo metodo permette un controllo granulare su cosa e come ripristinare, sfruttando la natura diretta dei backup di rsnapshot.
== Esempi ==
=== Ripristino di un file singolo ===
Mantenendo permessi e proprietà, digitare in un [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo cp /var/cache/rsnapshot/daily.0/localhost/home/utente/documento.txt /home/utente/documento.txt
}}}
=== Ripristino di un'intera cartella ===
{{{#!wiki important
Quando si ripristina un'intera cartella, prestare attenzione a non sovrascrivere dati importanti esistenti, a meno che non sia l'intenzione. L'uso di `rsync -a` è spesso preferibile a `cp -a` perché rsync offre maggiore controllo e può essere interrotto e ripreso.
}}}
Mantenendo permessi e proprietà, digitare in un [[AmministrazioneSistema/Terminale|terminale]] il seguente comando:{{{
sudo rsync -a /var/cache/rsnapshot/daily.0/localhost/home/utente/documenti/ /home/utente/documenti/
}}}
= Ulteriori risorse =
* [[http://rsnapshot.org/rsnapshot/docs/docbook/rest.html|Tutorial ufficiale]]
----
CategoryAmministrazione