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






le 9 May 2011 à 23:23 h
[...] 18 Serveur dédié OVH : mettre en place une sauvegarde automatisée sur FTP | Yann "Bug" Dub… dit : le 6 May 2011 à 17:05 [...]
le 19 May 2011 à 17:42 h
[...] quatrième partition de 100 Go destinée à stocker les fichiers de sauvegarde avant envoi sur le serveur FTP de sauvegarde proposé en standard par OVH (voir article détaillé à ce sujet). Comme l’espace FTP disponible total est lui aussi de 100 Go, inutile de prévoir plus. Nous [...]
le 23 May 2011 à 14:48 h
[...] 6 Serveur dédié OVH : mettre en place une sauvegarde automatisée sur FTP | Yann "Bug" Dub… dit : le 19 May 2011 à 23:56 [...]
le 14 December 2011 à 1:31 h
Merci pour le tuto qui m’a fait gagner bcp de temps. Marche super chez moi.
le 2 February 2012 à 1:51 h
Pour ceux qui auraient un hébergement OVH Kimsufi, penser à installer un client FTP : emerge ncftp
Puis pour se connecter:
ncftp
open -u ks******.kimsufi.com -p ftp_passwd serveurKimsufi.ovh.net
Thank’s pour le tuto
le 2 February 2012 à 2:03 h
@Benjiscan: pour quoi faire le client ncftp? qu’apporte-t-il par rapport au client ftp de base de Linux? et pour quoi faire le FTP? Pour accéder au serveur de sauvegarde fourni par OVH?
le 2 February 2012 à 2:17 h
@Y.Dubois : Avec un hébergement OVH Kimsufi (Gentoo 2006.0 – 64 bits) le client ftp de base ne semble pas fonctionner (ou bien il faut aller la chercher sous un répertoire que je n’ai pas trouvé).
Du coup, j’ai bloqué sur votre tuto au niveau de la commande :
ftp ftpback-rbx[n-nn].ovh.net
La solution dans mon cas à été de passer par ncftp.
Et effectivement, j’utilise le FTP pour accéder au serveur de sauvegarde fourni par OVH.
le 2 February 2012 à 2:27 h
OK, pour info, sur mes Kimsufi installés en Debian 64, pas de souci pour utiliser le client FTP “de base”. Donc peut-être un problème avec la distri Gentoo OVH, ou juste avec cette version.
Merci pour l’info, ça peut être utile à d’autres.
le 2 February 2012 à 2:41 h
@Y.Dubois: voici le détail de mon Kimsufi… pas tant que ça
: https://www.ovh.com/fr/serveurs_dedies/distributions/release_2.xml
le 18 March 2012 à 0:00 h
Merci !
Tuto clair et précis, fonctionne du premier coup (Kimsufi ubuntu) sans accroc !
le 22 March 2012 à 16:13 h
Merci! Mais comment on fait pour récupérer les fichiers? J’ai essayé scp ca ne fonctionne pas, get non plus… j’ai l’impression que le fichier se télécharge sur le serveur lui-même
le 22 March 2012 à 16:17 h
En fait le get fonctionne, mais il envoie le fichier tgz vers le root du Kimsufi…
le 22 March 2012 à 16:19 h
@Will. C’est un serveur http://FTP... donc on récupère les fichiers par FTP. Il s’agit d’un serveur séparé, mutualisé, et mis à la disposition des tous les utilisateurs de serveurs dédiés OVH. Vous ne pouvez y accéder que depuis votre serveur, il n’est pas accessible à l’extérieur du réseau OVH et ne répond qu’aux serveurs dédiés.
le 22 March 2012 à 21:51 h
Effectivement mais quelle est la ligne de commande pour rapatrier ces fichiers sur ma machine locale (mon pc)? J’avoue être un peu pommé pour la partie “récupération”. Par contre, génial le tuto, j’avais jamais tapé une ligne de commande, et ça marche comme sur des roulettes!
le 22 March 2012 à 23:21 h
@Will : il faut procéder en deux étapes; d’abord les rapatrier sur le serveur en FTP, puis les rapatrier depuis le serveur vers la machine locale au choix en scp, ftp ou autre en fonction de ce qui est supporté par votre serveur. Dans la mesure où seul le serveur dédié peut accéder à l’espace de stockage FTP proposé par OVH, il n’y a pas d’autre moyen ( ou alors mettre en place un “tunnel”, mais ça ce serait vraiment compliqué pour le coup ! )
le 31 March 2012 à 3:03 h
Excellent tutoriel, c’est la prémière fois je configure un backup serveur et ça m’a beaucoup aidé.
Par contre il y aune étape qui ne marche pas chez moi, car je suis sur un Gentoo Release 2 d’ovh ( kimsufi ) et le ftp n’est pas installé.
Parcontre j’arrive à bien m’ensortir avec LFTP qui est assez semblable, mais je bloque sur l’étape <> dans la quelle j’ai substitué sur la dernière ligne du script FTP par LFTP. En l’executant je reçoit un message d’information du LFTP mais les fichiers ne se copient pas sur le serveur de backup…
Quelqu’un pourrait traduire le script en LFTP ou magouiller un peu ?
Merci !
le 15 April 2012 à 21:25 h
Merci encore pour ce tuto
Tu conseillerai quel type de partition pour un SuperPlan BestOf en SSD qui fontionne en RAID ?
http://www.ovh.com/fr/serveurs_dedies/superplan_ssd.xml
Pour les 120 go proposoé, moi je suis parti pour 5 partitions comme tu as indiqué dans le tuto avec :
/var à 60 go
/save à 30 go
/home à 10 go
/ à 10 go
/swap à 4 go
Le tout sur le RAID1
Qu’en penses-tu?
le 16 April 2012 à 9:13 h
@Excellent : difficile de faire des recommandations valables pour tout le monde… Tes suggestions ne m’ont pas l’air absurdes en tout cas.
le 19 April 2012 à 10:41 h
Très bon tuto.
J’ai également des bases postgresql à sauvegarder donc j’ai créé un fichier postgresql-dump.sh pour faire un pg_dump mais j’ai des pb d’accès. Pourrais tu m’aider à argumenter et “environner” la fonction ?
Merci
le 21 July 2012 à 17:26 h
Bonjour,
après quelques recherches j’ai trouvé que renice 19 définissait la priorité du processus sur le CPU, mais je ne comprends pas la suite de cette ligne:
renice 19 -p $ &>/dev/null
c’est à dire -p $>/dev/null
que signifie -p $
Merci d’avance
le 26 July 2012 à 9:21 h
@TD :
- l’option -p est par défaut (donc peut être omise), pour préciser le PID (process ID).
- $$ sera remplacé par le PID du script courant par l’interpréteur (voir ici : http://tldp.org/LDP/abs/html/internalvariables.html#PROCCID)
- >/dev/null envoie les éventuels messages générés par la commande dans un trou noir supermassif du centre de la galaxie d’Andromède.
le 24 August 2012 à 13:25 h
Bonjour,
Tuto impeccable pour programmer les sauvegardes.
Mes fichiers de sauvegarde sont nommés de cette façon :
save_truc.2011-10-03.tar.gz
dump_unebdd.2011-10-03.tar.gz
Mon backup ftp se remplit petit à petit et arrive à plus de 50% après presque 1 an.
Je viens de faire un peu de nettoyage à la main (suppression de vielles sauvegardes inutiles) mais c’est fastidieux.
Vous n’auriez pas un script ou un tuto pour programmer le nettoyage automatique genre supression de toutes les sauvegardes de plus d’un mois ?
le 24 August 2012 à 14:47 h
@CinéPhil: si vous avez suivi la méthode détaillée dans cette page, les nouveaux fichiers écrasent les anciens, et le nombre de fichiers sauvegardé reste constant. Il n’y a donc pas de possibilité de faire du “nettoyage” pour libérer de l’espace. Il faudra donc renoncer à certaines sauvegardes ou acquérir un espace de sauvegarde plus conséquent chez OVH (ou sur un autre service de stockage externe). Je n’ai pas le temps de donner des détails pour un cas particulier, mais les outils et techniques mentionnés ici permettent d’écrire des scripts de nettoyage automatisé si nécessaire.
le 24 August 2012 à 14:59 h
Je reviens sur mes bases PostgreSQL … le petit script qui va bien pour PostgreSQL serait super extra super …
le 29 October 2012 à 15:22 h
Il y a une question que je me pose : a quoi correspond le [utilisateur] ?
tar -czf /home/[utilisateur]/save/files/etc.tgz
Merci !
le 29 October 2012 à 16:22 h
j’ai fait un test avec root mais voilà ce que j’ai lors du test du script :
sudo ./files-save.sh
./files-save.sh: line 3: /home/root/log/tar.log: Aucun fichier ou r?pertoire de ce type
Merci.
le 29 October 2012 à 20:09 h
@django : [utilisateur] c’est le login de l’utilisateur dans le répertoire duquel vous souhaitez enregistrer vos sauvegardes.
vous devez créer le répertoire log (mkdir log)
le 15 January 2013 à 14:04 h
super tuto !!!
par contre je suis sous gentoo et du coup la commande FTP n’est pas dispo il faut passer par ncftp
du coup je galere un peu pour écrire le script ftpback.sh
serait-il possible d’avoir de l’aide
merci d’avance
le 19 January 2013 à 15:29 h
Salut Yann,
Merci pour ce tuto qui va me sauver un jour ou l’autre.
J’ai un petit soucis, j’ai voulu récupérer une sauvegarde, je me connecte donc au ftp, je vais dans le répertoire numéro 1 qui correspond à Lundi, et je veux récupérer une archive home.tar mais lorsque je fais la commande “ls -l” je ne vois rien, pourtant le script de transfert de fichier fonctionne bien. Où peuvent-bien allé mes fichiers dans ce cas là ? parce que lorsque je fais get home.tar il me dit qu’il y a rien, pourtant sur le ftp local il y est bien.
le 17 February 2013 à 18:30 h
Comment fait on pour recevoir un mail de confirmation après chaque sauvegarde ?
Et surtout un mail d’erreur, si la sauvegarde s’est mal déroulée
Merci