Yann "Bug" Dubois

Développeur WordPress freelance à Paris
Flux RSS

Serveur dédié OVH : mettre en place une sauvegarde automatisée sur FTP

6 May 2011 Par : Yann Dubois Catégorie : Français, tech

Logo OVH noirTous les serveurs dédiés OVH et Kimsufi sont fournis avec une espace d’hébergement sur FTP gratuit. L’espace est limité mais il permet tout de même de sauvegarder l’essentiel des données systèmes d’un serveur web sous GNU/Linux, et en général également les sauvegardes de base de données et les fichiers de contenus de vos sites. Voici un mémo qui explique pas à pas comment activer votre espace de sauvegarde gratuit, puis comment mettre en place une politique de sauvegarde automatisée de vos fichiers les plus précieux. Pour rappel, mon guide de configuration rapide d’un serveur web LAMP sous Debian Linux chez OVH se trouve ici.

Politique de sauvegarde

Je parle de “politique de sauvegarde” car il ne s’agira pas simplement de faire chaque jour une copie de quelques fichiers : ces fichiers seront archivés quotidiennement, et conservés pendant une semaine sur votre espace FTP. Ceci permet non seulement de restaurer votre système et votre site en cas de désastre, mais également de “revenir en arrière” jusqu’à 7 jours si vous constatez un problème a posteriori (modification ou effacement intempestif d’un fichier). C’est donc une sorte de versionnage minimaliste de votre configuration.

Activer votre espace de sauvegarde FTP personnalisé

Par défaut, l’espace de sauvegarde proposé par OVH n’est pas activé, il faut donc aller dans votre console d’administration OVH (Manager) pour pouvoir bénéficier de ce service gratuit. Une fois activé, vous recevrez les informations de connexion par e-mail (à l’adresse de contact technique pour l’administration de votre serveur dédié). Voici comment faire :

  1. Connectez-vous à votre manager OVH
  2. Dans l’onglet “serveur dédié” cliquez sur le nom de la machine à sauvegarder
  3. Dans le menu de gauche cliquez sur “Services”
  4. Sous “Gestion des backups” cliquez sur l’icône “Backup Ftp”
  5. Cliquez sur “Activez votre backup Ftp”
  6. Confirmez
  7. Vous allez recevoir un message e-mail de ce type, contenant toutes les informations nécessaires à la connexion :
SAS OVH - http://www.ovh.com
2 rue Kellermann
BP 80157
59100 Roubaix

Bonjour,

Vous avez souscrit à notre offre de backup FTP via notre manager.
Nous vous informons que ce service est désormais actif.

Les paramètres de connexion au serveur FTP sont:

Login: [nom-serveur].ovh.net
Mot de passe: [***********]
Serveur ftp: ftpback-[xxxn-nn].ovh.net

Vous disposez d'un espace de : 100 Go

Vous devez obligatoirement vous connecter à partir de votre serveur
pour que la connexion se fasse.

Cordialement,

Support Client OVH
Support Technique : 08.99.70.17.61 ( 1.349 Euro/appel + 0.337 Euro/min)
Support Commercial : 08.20.32.03.63 (Numéro Indigo 0.118 Euro/min)
Fax : 03.20.20.09.58
Email: support@ovh.com
Du lundi au vendredi : 8h - 20h
Le Samedi :            9h - 17h

Le processus de sauvegarde

Voici le processus de sauvegarde proposé : chaque nuit pendant les heures creuses, votre serveur va automatiquement archiver dans une arborescence locale les fichiers importants de votre système et de votre site, ainsi que les données de vos bases MySql (il s’agira de fichiers d’archives compressés au format .tar.gz ou .tgz). Chaque jour les fichiers présents dans cette arborescence seront donc écrasés et remplacés par les sauvegardes mises à jour. Votre serveur a donc en local une copie des fichiers importants datant de la veille (c’est toujours pratique).

Une fois que tous les fichiers d’archive sont créés en local, un processus automatique va s’occuper de les envoyer par FTP dans votre espace de sauvegarde personnalisé gratuit offert par OVH. Dans cet espace FTP, on va créer 7 répertoires correspondant aux 7 jours de la semaine. Chaque jour, on écrasera la sauvegarde de la semaine précédente située à cet emplacement. Votre espace FTP contient donc à tout moment les sauvegardes de votre système archivées pour les 7 derniers jours.

Créer l’arborescence locale

Commençons par créer l’arborescence de sauvegarde locale. Je vous recommande de la créer à partir de votre dossier d’utilisateur personnel (/home/utilisateur), c’est celui dans lequel vous arrivez par défaut quand vous vous connectez en ssh à votre serveur pour l’administrer en ligne de commande.

Connectez-vous donc à votre serveur avec votre compte d’utilisateur en ssh, puis créez l’arborescence :

mkdir save
mkdir save/files
mkdir save/mysql
mkdir save/www
mkdir bin
mkdir log

C’est tout pour l’arborescence locale.

Création de l’arborescence sur le serveur FTP

L’espace de sauvegarde FTP de votre serveur dédié n’est accessible que depuis votre serveur lui-même. Vous devez donc impérativement faire les manipulations FTP depuis la ligne de commande de votre serveur pour y créer l’arborescence d’archivage des sauvegardes quotidiennes.

Voici comment procéder, en utilisant les informations reçues dans l’email envoyé par OVH lors de l’activation du service ( remplacer les informations [entre crochets] ):

ftp ftpback-rbx[n-nn].ovh.net
Name (ftpback-rbx[n-nn].ovh.net): [Login = nom de votre serveur = nsXXXXXX.ovh.net]
Password: [Mot de passe]
ftp> mkdir 1
257 "1" : The directory was successfully created
ftp> mkdir 1/files
ftp> mkdir 1/www
ftp> mkdir 1/mysql
ftp> mkdir 2
ftp> mkdir 2/files
ftp> mkdir 2/www
ftp> mkdir 2/mysql
ftp> mkdir 3
ftp> mkdir 3/files
ftp> mkdir 3/www
ftp> mkdir 3/mysql

( etc… jusqu’à 7 : )

ftp> mkdir 7
ftp> mkdir 7/files
ftp> mkdir 7/www
ftp> mkdir 7/mysql

Une fois tous les répertoires créés, vérifiez votre arborescence :

ls -R

Si tout est correct, vous pouvez sortir de la session FTP :

ftp> bye
221-Goodbye. You uploaded 0 and downloaded 0 kbytes.
221 Logout.

Création du script de sauvegarde des fichiers

Nous allons créer les scripts nécessaires au processus de sauvegarde automatique dans notre répertoire /bin :

cd bin
vi files-save.sh

Voici le contenu du script : (exemple a personnaliser selon vos besoins)

#!/bin/bash
renice 19 -p $ &>/dev/null
tar -czf /home/[utilisateur]/save/files/etc.tgz /etc >> /home/[utilisateur]/log/tar.log
tar -czf /home/[utilisateur]/save/files/root.tgz /root >> /home/[utilisateur]/log/tar.log
tar -czf /home/[utilisateur]/save/files/my_bin.tgz /home/[utilisateur]/bin >> /home/[utilisateur]/log/tar.log
tar -czf /home/[utilisateur]/save/files/awstats.tgz /var/lib/awstats >> /home/[utilisateur]/log/tar.log

Une fois le script créé, il faut le rendre exécutable :

chmod a+x files-save.sh

Création du script de sauvegarde des sites web

vi site-save.sh

#!/bin/bash
renice 19 -p $ &>/dev/null
tar -czf /home/[utilisateur]/save/www/[monsite].tgz /var/www/[monsite] >> /home/[utilisateur]/log/tar.log

chmod a+x site-save.sh

Création du script de sauvegarde des bases de données

vi data-dump.sh

#!/bin/bash
renice 19 -p $$ &>/dev/null
mysqldump -u [user] --password=[pass] [nom_base] > /home/[utilisateur]/save/mysql/[nom_base].sql 

chmod a+x data-dump.sh

Variante :

On peut aussi compresser (gzipper) les sauvegardes de base à la volée (préférable pour les grosses bases) :

mysqldump -u [user] --password=[pass] [nom_base] | gzip > /home/[utilisateur]/save/mysql/[nom_base].sql.gz

Je recommande de créer un utilisateur de base de données réservé aux sauvegardes, ayant le privilège de lire toutes les tables de toutes les bases dans MySql (privilege SELECT), et le privilège de les verrouiller pendant la sauvegarde (LOCK TABLES); mais pas de les modifier.

mysql -u root -p
GRANT SELECT ON *.* TO '[utilisateur_mysql]'@'localhost' IDENTIFIED BY '[mot_de_passe]';
grant lock tables on *.* to '[utilisateur_mysql]'@'localhost' IDENTIFIED BY '[mot_de_passe]';
exit

Cela vous évite de laisser traîner vos mots de passe de base de données habituels en clair dans vos scripts de sauvegarde.

Création du script de transfert automatique par FTP

Une fois que tous les fichiers de sauvegarde sont présents en local, ce script va automatiquement les transférer chaque jour par FTP sur notre espace de stockage personnalisé :

vi ftpback.sh

#!/bin/bash
Numjour=`date +%u`
FTPHost='ftpback-rbx[n-nn].ovh.net'
FTPLogin='ksXXXXXX.ovh.net'
FTPPass='***********'
FTPConnectstring="open $FTPHost\nuser $FTPLogin $FTPPass"
FTPCommands="
cd $Numjour/files
lcd /home/[utilisateur]/save/files
mput *
cd ../www
lcd /home/[utilisateur]/save/www
mput *
cd ../mysql
lcd /home/[utilisateur]/save/mysql
mput *
"
echo -e "$FTPConnectstring\n$FTPCommands\nbye" | ftp -ivn

(Les informations concernant le nom du serveur FTP, le login et le mot de passe sont à récupérer dans l’e-mail envoyé par OVH).

Rendons-le exécutable comme les autres :

chmod a+x ftpback.sh

Test des scripts

…tous nos scripts de gestion de la politique de sauvegarde sont maintenant prêts, nous allons les tester un par un :

sudo ./files-save.sh
sudo ./site-save.sh
sudo ./data-dump.sh
sudo ./ftpback.sh

Création du script “maître”

vi nightly-save.sh

#!/bin/bash
renice 19 -p $$ &>/dev/null
/home/[utilisateur]/bin/files-save.sh
/home/[utilisateur]/bin/site-save.sh
/home/[utilisateur]/bin/data-dump.sh
/home/[utilisateur]/bin/ftpback.sh

chmod a+x nightly-save.sh

test du script maître

sudo ./nightly-save.sh

Automatisation de la tâche de sauvegarde quotidienne avec cron

sudo crontab -e

0   4  *   *   *     /home/[utilisateur]/bin/nightly-save.sh

Cette ligne ajoutée dans le fichier crontab de votre serveur exécutera les opérations d’archivage et de sauvegarde par FTP toutes les nuits à 4h du matin.

Liens utiles

A lire également...

{"code":"internal_server_error","message":"

There has been a critical error on your website.<\/p>

Learn more about debugging in WordPress.<\/a><\/p>","data":{"status":500},"additional_errors":[]}