Backup remoti con rsnapshot

Informatica

Dopo aver visto come usare rsnapshot per fare backup locali, vediamo come usarlo per fare backup su altri computer in rete. Dopo tutto, non è molto più difficile che fare backup locali...

Nella mia rete locale ho tre computer: castor, il mio desktop con Mandriva gnu/linux che viene usato spesso e che fa già i backup in locale su un hard disk secondario, pollux, un iMac G3 con su Mac Os X 10.3 che viene usato saltuariamente e linutop, il mio serverino di sviluppo LAMP Debian che è sempre acceso, privo di schermo.

Evidentemente linutop e pollux richiedono approcci di backup differenti.

Backup serverino debian linutop

Questo è il più facile: aggiungo queste righe a /etc/rsnapshot.conf su castor:

backup  [email protected]:/etc/      linutop/
backup  [email protected]:/var/      linutop/
backup  [email protected]:/root/     linutop/
backup  [email protected]:/home/     linutop/
backup_script   /root/backup_script/backup_mysql.sh linutop/
backup_script   /root/backup_script/backup_dpkg.sh  linutop/

Le prime tre righe salvano il contenuto di /etc, /var e /home dal serverino linutop su castor, le ultime due eseguono degli script. Il primo fa un dump dei database di mysql, che essendo in esecuzione al momento della copia di /var/ probabilmente avrà restituito una copia inutilizzabile, il secondo salva la lista dei pacchetti installati, in modo che sia possibile ripristinarli in seguito.

Più in dettaglio, questo è il contenuto del primo script, /root/backup_script/backup_mysql.sh, tratto dalla documentazione di rsnapshot:

#!/bin/bash
##############################################################################
# backup_mysql.sh
#
# by Nathan Rosenquist <[email protected]>
# http://www.rsnapshot.org/
#
# This is a simple shell script to backup a MySQL database with rsnapshot.
#
# The assumption is that this will be invoked from rsnapshot. Also, since it
# will run unattended, the user that runs rsnapshot (probably root) should have
# a .my.cnf file in their home directory that contains the password for the
# MySQL root user. For example:
#
# /root/.my.cnf (chmod 0600)
#   [client]
#   user = root
#   password = thepassword
#   host = localhost
#
# This script simply needs to dump a file into the current working directory.
# rsnapshot handles everything else.
##############################################################################
# $Id: backup_mysql.sh,v 1.5 2005/04/03 13:52:02 scubaninja Exp $

# backup the database
ssh [email protected] -i ~/.ssh/rsnapshot_dsa /usr/bin/mysqldump --defaults-extra-file=/root/.my.cnf --all-databases > mysqldump_all_databases.sql

# make the backup readable only by root
/bin/chmod 600 mysqldump_all_databases.sql

Questo invece è il contenuto del secondo script, /root/backup_script/backup_dpkg.sh:

#!/bin/bash
# salva una lista di pacchetti ripristinabile con la sequenza di comandi:
# apt-get update
# apt-get dist-upgrade
# dpkg --clear-selections
# dpkg --set-selections < dpkg-restore.txt
# apt-get -u dselect-upgade --purge
#
# in questo modo si possono ripristinare i pacchetti installati a partire
# da un'installazione minimale. Ripristinando /etc, /home e /var si ripristina
# anche la configurazione e i dati. Ricordarsi di controllare anche /boot/grub
ssh [email protected] -i ~/.ssh/rsnapshot_dsa /usr/bin/dpkg --get-selections > dpkg-restore.txt
exit 0

Nota: per accedere via ssh a linutop è necessario configurare l'accesso tramite chiave publbica. Vedi la parte "Accesso SSH con chiave pubblica".

Ripristino serverino debian linutop

Per un ripristino completo, posso fare un'installazione minimale o ripristinare un vecchio dump del file system, reinstallare i pacchetti mancanti (installati dopo il dump più recente) con i comandi:

aptitude update
aptitude dist-upgrade
dpkg --clear-selections
dpkg --set-selections < dpkg-restore.txt
apt-get -u dselect-upgrade --purge

Poi ricopiare a posto /etc, /home, /root e /var, e poi ripristinare i database con il comando:

mysql < mysqldump_all_databases.sql

Poiché è un piccolo server, si assume che ogni operazione di riprstino venga fatta da root, che può montare/smontare liberamente dischi e condivisioni di rete senza problemi. Per questo non ho previsto alcun modo esplicito per accedere ai backup da linutop (se necessario root fa un mount tramite sshfs).

Backup e ripristino iMac pollux

Su pollux mi interessa solo avere backup della directory utenti /Users.

Poiché pollux è un sistema desktop piuttosto lento, e non è acceso frequentemente, non posso contare su backup settimanali fatti da castor, su cui gira rsnapshot, ne salterebbero troppi, visto che non ho la certezza che pollux sia acceso mentre anacron su castor avvia il backup.

Per questo i backup devono partire da pollux verso castor, visto che è molto probabile che quest'ultimo sia comunque acceso. Vengono sincronizzati i dati di pollux con una directory di castor, e poi da questa vengono fatti gli snapshot periodici. Dunque per pollux, weekly.0 nella dir degli snapshot risalirà a un tempo compreso tra una settimana e dieci giorni fa. Per ora è il meglio che sono riuscito a fare.

Uso allora rsync per fare backup completi di /Users su castor in /mnt/backup/imac-pool con questo script:

script rsync

Lanciato tramite anacron su pollux ogni 3 giorni, così che le modifiche da trasferire siano poche e il backup molto rapido:

configurazione anacron su pollux

Su castor, invece, aggiungo questa riga a /etc/rsnapshot.conf:

backup  /mnt/backup/imac-pool/Users     pollux/

E configuro samba su castor in modo da condividere in rete la directory /mnt/timemachine, così che gli utenti di pollux (che sono gli stessi utenti di castor) possano recuperare i propri file dai backup. Per questa configurazione ho usato il comodo draksambashare nel Centro di Controllo di Mandriva (naturalmente dopo la configurazione ho controllato il risultato in /etc/samba/).

Accedo a questa condivisione samba da pollux in questo modo:

procedura per accedere a samba da pollux

Riferimenti utili

Easy Automated Snapshot-Style Backups with Linux and Rsync

Trackback URL for this post:

http://gerlos.altervista.org/trackback/471

commenti

Invia nuovo commento

Il contenuto di questo campo è privato e non verrà mostrato pubblicamente.
  • Allowed HTML tags: <a> <em> <strong> <del> <cite> <code> <img> <ul> <ol> <li> <dl> <dt> <dd> <pre>
  • Linee e paragrafi vanno a capo automaticamente.
  • Insert Flickr images: [flickr-photo:id=230452326,size=s] or [flickr-photoset:id=72157594262419167,size=m].
  • Indirizzi web o e-mail vengono trasformati in link automaticamente

Maggiori informazioni sulle opzioni di formattazione.

CAPTCHA
Per provare che sei un visitatore umano, rispondi a questa domanda. È per evitare l'inserimento di messaggi spam.
Image CAPTCHA
Enter the characters shown in the image without spaces, also respect upper and lower case.