Mise en place d’une backup ftp sur serveur dédié OVH

OVH, dans sa grande bonté, offre un espace de stockage de backup FTP gratuitement pour les heureux possesseurs d’un serveur dédié.

Le principe est le suivant : vous avez un serveur dédié contenant plusieurs sites et utilisant plusieurs bases de données. Vous êtes autonome, mais cela comporte des risques. Si le serveur crash ou si vous vous faites pirater, les fichiers seront perdus sans possibilité de les récupérer. A l’inverse, si vous avez un serveur mutualisé, OVH se charge de faire les backups en interne. Ce sont les fameux snapshots OVH.

Pour activer l’option, il faut passer par votre manager. Suivez les étapes de la section ‘Activation de votre espace ftp de backup’ de la page https://docs.ovh.com/fr/dedicated/services-backup-storage/

backupftp ovh

Une fois l’option activée, vous recevez un mail avec les accès à votre espace de backup. A ce stade, vous êtes livré à vous même. OVH ne propose pas de scripts clé en main.

Voici donc comment procéder. Connectez-vous en SSH à votre serveur dédié nsxxxxxx.ovh.net puis téléchargez les fichiers que nous utiliserons pour faire nos backups au moyen de wget (nous reviendrons un peu plus tard sur la façon dont ils fonctionnent) :

cd /home/
mkdir backup
cd backup/
mkdir conf
mkdir mysql
mkdir web
cd /home/
mkdir admin
cd admin/
wget -U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4' http://www.exemple.com/config.sh
wget -U 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4' http://www.exemple.com/backupftpovh.sh

Éditez le fichier config.sh fraîchement téléchargé ainsi que la ligne 7 de backupftpovh.sh.

Ajoutons un alias oftp permettant de se connecter à vos espaces de backup ftp :

vi /etc/bash/bashrc

Tout à la fin du fichier, ajoutez la ligne suivante :

alias oftp="ncftp -u nsxxxxxx.ovh.net -p MOTDEPASSE ftpback-xxxx-x.ovh.net"

Déconnectez-vous puis reconnectez-vous en SSH afin de mettre à jour les alias.

Vous devriez voir, en tapant alias, les différents alias disponibles. Le dernier devrait être l’alias oftp.

Il faut aussi créer les bons dossiers dont nous avons besoin sur le serveur de backup ftp. Maintenant que vous avez créé l’alias, tapez simplement oftp. Vous devriez être connecté au serveur de backup ftp :

backup ftp ovh

Ecrivez :

ncftp / > mkdir web
ncftp / > mkdir conf
ncftp / > mkdir mysql
ncftp / > exit

PS : répondez ‘no’ à la question ‘Would you like to save a bookmark to’

Ajoutez la tâche cron qui sera appelée quotidiennement :

crontab -e

Puis collez :

25 1 * * * bash /home/admin/backupftpovh.sh #backupweb

Puis :

CTRL + O
Entrée
CTRL + X

Normalement, la crontab sera visible en tapant

crontab -l

Tentez de lancer le script pour voir si tout fonctionne :

/home/admin/backupftpovh.sh

Si vous avez bien édité le fichier backupftpovh.sh et que l’opération s’est déroulée avec succès, vous devriez avoir reçu un mail.

backup mysql web ovh

 Explications

L’archive que vous devez télécharger sur notre site comporte deux fichiers. Ce sont des scripts bash qui permettent de sauvegarder l’intégralité de vos fichiers web ainsi que toutes vos bases mysql. Il faut appeler ces fichiers quotidiennement afin de mettre à jours vos fichiers. Dans notre exemple, nous faisons une backup à 1h25 tous les jours. Mais vous pouvez tout à fait changer la périodicité des sauvegardes.

Ce n’est pas facile mais il est absolument nécessaire de mettre en place de telles sauvegardes. Un dédié OVH coûte assez cher pour ne pas se permettre de perdre les fichiers qui y sont stockés.

N’hésitez pas à revenir vers nous si vous rencontrez des problèmes.

PS : les sauvegardes sont quotidiennes. Vous n’avez donc que les sauvegardes de la semaine passées. L’espace disponible sur le serveur de backup ftp étant restreint, vous ne pourrez pas y stocker des mois de sauvegarde.

dedie ovh sauvegarde crontab

Prestashop et Page blanche : la solution
Prestashop : nombre de produits par page

31 Comments on “Mise en place d’une backup ftp sur serveur dédié OVH”

  1. Bonjour,

    Merci pour ce tuto complet !!

    j’ai quand même un petit problème à la fin quand je lance le script …

    : Aucun fichier ou répertoire de ce typeme/admin/config.sh
    ‘: not a valid identifiersh: line 17: declare: `CDERR
    /home/admin/backupftpovh.sh: line 73: syntax error near unexpected token `fi’
    ‘home/admin/backupftpovh.sh: line 73: `fi

    merci d’avance pour votre aide
    Yves

    1. Bonjour,

      backupftpovh.sh fait un include du fichier config.sh qui est situé dans le même dossier que celui-ci.
      Est-il présent ? Il ne le trouve pas, il faut déjà chercher de ce côté.

      D’autre part, le fichier backupftpovh.sh génère un message d’erreur.
      Il ne comporte pas d’erreurs de caractères / retours à la ligne ?
      C’est fréquent en mode console avec vi.

      PS : ça fait 4 jours que vous avez posté le message. Avez-vous trouvé quelque chose depuis ?

      Jérôme

  2. Bonjour,

    Même message pour moi:

    : Aucun fichier ou répertoire de ce typeme/admin/config.sh
    ‘: not a valid identifiersh: line 17: declare: `CDERR
    /home/admin/backupftpovh.sh: line 73: syntax error near unexpected token `fi’
    ‘home/admin/backupftpovh.sh: line 73: `fi

    Le fichier config.sh qui est situé dans le même dossier que backupftpovh.sh

    Avez vous trouvé une solution?

    1. Je reprends avec un dédié tout neuf pour voir si j’ai les mêmes erreurs que vous :
      – activation de l’option dans les services OVH
      – je vais dans la gestion du compte backup FTP : mes identifiants sont bons et j’ai de la place sur le disque.
      – j’importe mes fichiers. J’unzip le tout. Je fais un « ls -ll » pour vérifier si tout est ok. Je remarque à ce stade que mes fichiers peuvent être lus, écrits mais pas exécutés. Je vais donc un « chmod 755 *.sh » (je ne sais pas si ça peut bloquer à cause de ça mais essayer de modifier les droits sur les fichiers).
      – j’édite mon config.sh (attention à ne pas briser les fichiers avec de mauvaises manipulations)
      – je configure mon backupftpovh.sh : ajout de mon mail pour les rapports
      – j’ouvre bashrc et j’ajoute à la toute fin la ligne pour l’alias
      – je tape oftp pour accéder au serveur de backup FTP puis je créé mes 3 dossiers
      – je créé ma cron, je lance le fichier .sh et la… c’est le drame :P

      Pour une raison ou une autre, le téléchargement du fichier zip modifie légèrement le fichier .sh. Je pense que cela doit venir de la façon dont je télécharge ou j’ouvre le fichier zip.
      Remplacez le fichier backupftpovh.sh en tapant :

      wget -U ‘Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4’ https://www.lije-creative.com/backupftpovh.sh

      ça devrait passer.

      1. Merci Jérôme, en effet ça semble fonctionner;

        J’ai juste un problème de « fichier de cache modifié pendant le lecture ».

        Est-il possible d’exclure des fichiers ou dossiers de la sauvegarde?

      2. Dans le fichier backupftpovh.sh, à la ligne 92 :
        # Databases a ne pas sauvegarder séparées par des espaces
        IGGY= »

        PS : je ne me suis pas encore servi de cette fonctionnalité car je dispose de 100 Go d’espace de backup.

      3. Le script prend tous les dossiers présents dans home et les zip. Vous pouvez cependant modifier la condition de la ligne 58 pour ajouter à la main les dossiers à ne pas prendre. Pour ne pas prendre le dossier toto, il faudrait ajouter en fin de ligne : && [ $nom != « toto » ]

      4. Impeccable, merci Jérôme.

        le backup de « home » s’effectue sans problème, mais pour mysql j’ai le message suivant:

        ‘ (1) 2005 (HY000): Unknown MySQL server host ‘localhost

        Cannot open local file /home/backup/mysql/*.gz for reading: No such file or directory.

        ncftpput /home/backup/mysql/*.gz: could not open file.

      5. Les 2 dernières erreurs provienne du fait que le script ne parvient pas à se connecter au serveur SQL : « unknown mysql server host ».

        Pourtant sur un diédié le Mysql_host défini dans config.sh devrait être localhost. A moins que votre serveur ne soit pas installé / activé, je ne vois pas d’ou cela peut provenir.
        Tentez un /etc/init.d/mysql start

        Si ça ne fonctionne pas avec localhost, essayez avec l’ip mais si vos sites utilisent cet host là, je ne vois pas pourquoi ça ne fonctionnerait pas ici.

  3. Super Article.

    Personnellement je n’ai eu qu’un CHMOD 755 a exécuter sur les deux scripts une fois téléchargés sur le serveur afin de pouvoir les exécuter.

    Par contre j’ai une suggestion pour améliorer l’ensemble. Etant donné que l’espace sur le serveur FTP est limité à 100 Go, ce serait bien de pouvoir exclure :
    – certaines bases de données
    – certains répertoires du répertoire home (tout n’est pas toujours à sauvegarder)

    En tout cas, merci pour ce super boulot Jérôme !

    1. Pas de quoi ;)
      Concernant les bases de données, vous pouvez définir les bases à ne pas enregistrer à la ligne 92 de backupftpovh.sh
      Pour les dossiers, c’est un peu plus compliqué, cf la ligne 58.

  4. Salut,

    Félicitation pour ce post très détaillé !

    Par contre lorsque je tente l’affaire, lors de l’execution du script : « /home/admin/backupftpovh.sh » pour tester le bon fonctionnement, j’ai un message d’erreur :

    Cannot open local file /home/backup/web/*.gz for reading: No such file or directory.
    ncftpput /home/backup/web/*.gz: could not open file.

    Une idée?

    Odo.

    1. Vous avez 2 solutions :
      – soit vous utilisez votre client FTP pour vous connecter sur le backupftp d’OVH, vous récupérez les fichiers, vous les désippez et vous uploadez les fichiers sur votre serveur de production et vous faites un import de la base de donnée via phpMyAdmin par exemple
      – soit vous vous connectez en SSH au serveur, vous tapez manuellement l’alias ‘oftp’, vous récupérez les fichiers avec la commande get, vous les désippez (tar -zxvf) et vous importez les fichiers et la base de donnée (fonction mysql pour la base et fonction mv ou cp pour les fichiers)

      1. Bonjour Monsieur,

        Tout d’abord, brave pour le tutoriel.
        J’ai une question qui pourra vous sembler basique, mais quel logiciel FTP avec quelle configuration utilisez vous pour vous connecter au backup FTP, sachant qu’il faut le faire en SSH ?
        J’avoue trouver plus ergonomique un logiciel que des lignes de commandes.
        Bien à vous.

      2. Bonjour,
        Le backup ftp est un serveur ftp standard. N’importe quel client ftp est compatible. J’utilise FlashFXP pour ma part. Il est vrai que c’est plus simple de passer en ssh car les fichiers sont téléchargés directement dans le bon dossier. Maintenant, rien ne vous empêche de les télécharger en ftp puis de les uploader à nouveau sur votre serveur.

  5. Un petit mot juste pour vous remercier de ce tuto et ces scripts.

    J’ai juste du faire un chmod sur les .sh, et tout fonctionne.

    Merci

  6. Excellent script, bien expliqué et fonctionne à merveille, pourrait t’ont imaginer une suite pour récupérer ses données stockés sur le ftp de OVH ?

    Crdt
    Frédéric

      1. Etes-vous sûr ?
        je n’ai pas repéré dans le script une ligne qui dit « récupère les fichiers distants viens les mettre dans leur répertoire d’origine en local »…..

      2. Entre les lignes 53 et 64 du fichier backupftpovh.sh, le script boucle sur tous les dossiers qui sont dans /home puis les tar et gzip.
        Il les upload ligne 67 sur votre back-up ftp.

      3. Oui je suis d’accord,
        mais je pensais que vous disiez « oui le script recupère les sauvegarde sur le ftp et les remet en place… », il faut une restauration à partir d’une sauvegarde http://ftp...
        c’est là que je suis un peu surpris….

      4. Autant pour moi. Ce n’est pas le but de ce script. Personnellement, je me connecte soit en ssh sur le ftp perso pour télécharger le fichier dont j’ai spécifiquement besoin, soit je m’y connecte directement en ftp (c’est un serveur ftp après tout).
        En espérant vous avoir aidé.

    1. Bonjour,
      Il n’y a qu’une semaine de back-up. C’est trop pour vous ?
      Perso, je fais des back-up jusqu’à 2 à 3 mois…

  7. Bonjour,

    J’ai le même souci que Franck pour mysql :

    ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (111)
    Cannot open local file /home/backup/mysql/*.gz for reading: No such file or directory.
    ncftpput /home/backup/mysql/*.gz: could not open file.

    Euh, depuis, pas de retour sur la résolution de ce souci ?
    Grand merci par avance.

    1. Tout ça commence à faire très vieux. Ma version est maintenant bien plus complète que celle de l’article.
      Cela dit, Bob avait 3 problèmes. Les 2 derniers découlent du premier. Quels sont les tiens ?
      Serveur dédié ? ovh ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *