Serveur dédié OVH : mettre en place une sauvegarde automatisée sur FTP
Tous 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 :
- Connectez-vous à votre manager OVH
- Dans l’onglet “serveur dédié” cliquez sur le nom de la machine à sauvegarder
- Dans le menu de gauche cliquez sur “Services”
- Sous “Gestion des backups” cliquez sur l’icône “Backup Ftp”
- Cliquez sur “Activez votre backup Ftp”
- Confirmez
- 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
- Privileges for mysqldeump (@ mysql forum, en anglais)
- The LOCK TABLE privilege
- mysql_dump