Combien de fois cette phrase a retenti dans vos esprits imprudents ? dans mon esprit imprudent à moi, plein.
Alors, comme je viens de toper un kimloli sur les conseils de mon bouquetin favori, je me suis dit que, pour une fois, j’y collerais bien une procedure de backup propre.
J’ai déjà parlé et probablement pasté ici même un petit script gentil qui, grâce au couple rsync / rsyncd, permettait de rendre cette opération relativement rapide assez simplement. J’y ai apporté quelques modifs et enrobé le tout d’un chouillat de sécu. Un chouillat j’ai dit, trépigne pas spoty.
Le kimloli est un FreeBSD 6.2, j’y installe rsync via les ports.
Le backup est fait sur une bête workstation Ubuntu, chez moi. J’y installe rsync via apt-get.
Voici les differentes étapes que j’ai suivi pour préparer mon rsyncd sur ma machine à backuper :
Activation du rsync dans inetd :
# grep rsync /etc/inetd.conf # backup rsync stream tcp nowait root /usr/local/bin/rsync rsyncd --daemon --config=/usr/local/etc/rsyncd.conf
Interdiction d’y accéder d’ailleurs que de ma ligne DSL qui dispose d’une IP fixe :
ALL : localhost ip.publique.dsl : allow rsync : ALL : deny
Configuration du demon rsync
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
uid = root
gid = wheel
use chroot = no
max connections = 1
syslog facility = local5
[homes]
path = /home
comment = Homes
# seul utilisateur autorisé
auth users = bkp
secrets file = /usr/local/etc/rsyncd.secrets
hosts allow = ip.publique.dsl
[usr_local]
path = /usr/local
comment = usr local directories
auth users = bkp
secrets file = /usr/local/etc/rsyncd.secrets
hosts allow = ip.publique.dsl
Créaction du très simple fichier d’authentification /usr/local/etc/rsyncd.secrets :
bkp:mangemoitoute
Activation de inetd au démarrage :
# grep inetd /etc/rc.conf inetd_enable="YES"
Et on démarre tout ce petit monde :
# /etc/rc.d/inetd start
La conf serveur est prête. Coté client, je vous propose ce script :
#!/bin/sh # Simple rsync client script # if "console" is specified, verbose output and --delete are implied # iMilRSYNC="/usr/bin/rsync" usage() { echo "usage: $0 " exit 1 } if [ $# != 4 ] then usage fi HOST=$2 FROM=$3 TO=$4 EXCLUDE="/home/bkp/rsync.exclude" SECRET="/home/bkp/rsync.secret" USER="bkp" OPTIONS="--compress -a --recursive --times --perms --links" if [ -f ${EXCLUDE} ]; then OPTIONS="${OPTIONS} --exclude-from=${EXCLUDE}" fi if [ -f ${SECRET} ]; then OPTIONS="${OPTIONS} --password-file=${SECRET}" fi case $1 in console) CONSOLE="--verbose --progress --stats --delete" ;; cron) CONSOLE="" ;; *) usage ;; esac CMD="${RSYNC} ${CONSOLE} ${OPTIONS} ${USER}@${HOST}::${FROM} ${TO}/${FROM}" echo running: ${CMD} eval ${CMD}
On crée le fichier /home/bkp/rsync.secret qui contiendra UNIQUEMENT le mot de passe précisé dans le fichier secret du serveur, puis /home/bkp/rsync.exclude qui est composé de la liste des fichiers et repertoires à exclude, par exemple :
/home/ftp /home/mirror *access_log *error_log
On teste en console :
bin/bkp.sh console kimloli212 usr_local /home/bkp/kimloli
Et si tout va bien, on cron :
0 2 * * * /home/bkp/bin/bkp.sh cron kimloli212 homes /home/bkp/kimloli
Joyeux backups
June 2nd, 2011 at 5:54 pm
bon tip, je remplacerai juste l’appel a cron par un appel du script de backup dans /etc/cron.daily, de facon a ce que anacron le lance ( a moins que ta station ubuntu soit en permanence allumée !)