## 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