merde, j’ai pas de backup…

Tags: , ,
Add comments

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

RSYNC="/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

One Response to “merde, j’ai pas de backup…”

  1. marcello^ Says:

    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 !)

Leave a Reply

WP Theme & Icons based on GlossyBlue by N.Design Studio
Banner from www.trynthlas.com
Entries RSS Comments RSS Log in
Performance Optimization WordPress Plugins by W3 EDGE