www.RiffZone.net
code.RiffZone.net
login.RiffZone.net
Retour au Sommaire

Sauvegarder automatiquement son serveur avec sitecopy

Notre serveur Debian peut crasher, et de manière irrécupérable. Shit happens.

Si vous n'avez pas une arborescence d'une centaine de Gigas de petits fichiers à sauvegarder, alors l'utilitaire sitecopy est une solution plutôt pratique que j'utilise régulièrement. Son principal défaut est de maintenir l'état des fichiers sauvegardés dans un fichier xml, ce qui est de la dernière crétinerie puisque ce format n'est clairement pas fait pour ça, et finira par planter sitecopy à partir d'une certaine taille de "base". Reste que pour les cas courants il est extrêmement pratique.

Commençons par installer l'outil en question:

apt-get install sitecopy

Il faut maintenant créer un fichier de config dans '/root/':

cd /root mkdir -m 700 .sitecopy touch .sitecopyrc chmod 600 .sitecopyrc

Puis on va configurer les sauvegardes. Il nous faut pour cela un compte FTP distant qui accueillera nos sauvegardes. Pour les besoins de l'exemple, j'utiliserai le serveur FTP 'ftp.monbackup.com' avec pour identifiant 'ftpbackup' et mot de passe 'FTPass123'. Ce compte est bien sûr fictif.

Je veux d'abord sauvegarder le répertoire regroupant mes vhosts Apache, ainsi que mes exports automatiques MySQL (décrits dans une autre section). Le tout est situé localement dans '/home/www/', et je veux en dupliquer le contenu dans un répertoire '/www/' de mon serveur FTP. Je rajoute donc au fichier de config '/root/.sitecopyrc' les lignes suivantes:

site www server ftp.monbackup.com remote /www/ local /home/www/ username ftpbackup password FTPass123

Le répertoire '/www/' distant doit être déjà créé sur le serveur FTP, et ouvert en écriture pour l'utilisateur 'ftpbackup'.

Nous avons déclaré une entrée de configuration nommée 'www' (en référence au nom du répertoire à synchroniser), il faut maintenant initialiser la sauvegarde en disant au moteur que le répertoire distant de sauvegarde est vide, et que la sauvegarde initiale reste à faire. Cela se fait à l'aide de la commande suivante:

sitecopy --init www

Puis nous effactuons la première sauvegarde à l'aide de la commande suivante:

sitecopy --update www

Chaque nouvel appel de cette commande d'update se contentera de mettre à jour les fichiers modifiés, répercuter les suppressions et créations.

Faisons la même chose pour le répertoire /etc de notre serveur, en ajoutant cette fois au fichier de config '/root/.sitecopyrc' les lignes suivantes:

site etc server ftp.monbackup.com remote /etc/ local /etc/ username ftpbackup password FTPass123

On aura créé le répertoire nécessaire (avec droits d'écriture) sur le serveur distant. Lançons maintenant les commandes d'initialisation:

sitecopy --init etc sitecopy --update etc

A ce stade, j'ai envie d'automatiser mes sauvegardes, je crée donc un script shell '/root/sitecopy.sh' qui contiendra mes commandes quotidiennes d'update. Pensez à rendre le scrpit exécutable au niveau des droits.

Le fichier '/root/sitecopy.sh' contient donc:

sitecopy --update www sitecopy --update etc

Ajoutez maintenant la ligne suivante au fichier système '/etc/crontab':

0 4 * * * root /root/sitecopy.sh

Nous avons terminé, chaque matin à 4h00 les deux répertoires '/home/www/' et '/etc/' seront mis à jour sur l'espace ftp de sauvegarde. On peut compléter le dispositif par l'envoi d'un rapport de sauvegarde, ce sera peut-être l'objet d'un futur article.