Sur les offres d'hébergement mutualisés d'OVH, contrairement à la sauvegarde des fichiers sur le FTP, la sauvegarde automatique des bases de données n'est pas proposée. Voyons ensemble comment remédier à cela très simplement !

Les informations contenues dans une base de données d'un site Web sont amenées à changer tous les jours. Il est alors extrêmement important de conserver une copie chez soit ou sur un serveur externe (cloud).

Pour sauvegarder automatiquement notre base de données, nous allons utiliser un script PHP, le planificateur de tâches d'OVH (tâche cron) et un logiciel du type SyncBack sous Windows.

Le script PHP

Avant tout, créez les répertoires "_backups/sql" à la racine de votre FTP OVH. Il contiendra les fichiers de sauvegardes de ou des bases de données.

Ensuite, créez un répertoire "_scripts" ou équivalent également à la racine de votre FTP OVH. Ce dossier contiendra tous les scripts automatisés.

A l'intérieur, créez un fichier nommé backup_sql_{nom-de-la-base}.php et insérez-y le code ci-dessous. Pensez à changer le {nom utilisateur} par le login/utilisateur du compte FTP de votre offre OVH !

<?php
$date = date('Y-m-d-H\hi');

// Répertoire de destination des backups (chemin absolu !)
define('DIR_DEST', '/home/{nom utilisateur}/_backups/sql/');

// Paramètres de connexion à la base de données
define('DB_HOST', 'nom-du-serveur-mysql-chez-ovh');
define('DB_USER', 'nom-utilisateur-mysql');
define('DB_PWD', 'mot-de-passe-mysql');
define('DB_NAME', 'nom-base-de-données-à-sauvegarder');

// Lancement du backup
system("mysqldump --host=".DB_HOST." --user=".DB_USER." --password=".DB_PWD." ".DB_NAME." > ".DIR_DEST.DB_NAME.".".$date.".sql");
?>

Le répertoire de destination doit être au format absolu, soit le chemin complet vers votre dossier !

Le script est très simple : il exécute la commande mysqldump sur le serveur pour récupérer un fichier nommé {nom-de-la-base}.{année-mois-jour-heurehminutes}.sql.

Une fois le fichier PHP présent sur le FTP, attribuez lui les droits d'exécution. Pour cela, sur FileZilla, faites un clic droit sur le fichier puis cliquez sur "Droits d'accès au fichier...". Une fenêtre s'ouvre et cochez toutes les cases "Exécuter".
Sinon, en SSH, dans le dossier contenant le script PHP, faites chmod ugo+x backup_sql_....php.

Planification de la tâche

Le planificateur de tâches OVH va simplement nous servir à exécuter notre script PHP de façon automatique.

Connectez-vous à votre manager OVH, et rendez-vous dans votre offre d'hébergement.
Cliquez sur l'onglet "Cron" puis sur le bouton "Ajouter une planification".

Renseignez le chemin vers le script PHP puis le langage PHP 5.3.

Nous allons planifier cette sauvegarde tous les jours à heure fixe. Choisissez l'heure qui vous convient le mieux (la nuit c'est mieux, il y a moins de visites ;)) :

Ensuite vient le récapitulatif de la tâche fraîchement créée :

P.S : les minutes sur OVH ne peuvent pas être choisies. Elles sont déterminées aléatoirement la première fois.

Récupération automatique des sauvegardes

Jusqu'ici, nous avons créé notre script PHP qui effectue une sauvegarde de notre base de données SQL puis nous avons automatisé l'exécution de ce script.
Voyons comment récupérer les fichiers générés automatiquement.

Pour cela, je vais utiliser le logiciel SyncBack sous Windows. Vous pouvez faire la même chose avec Cobian Backup par exemple.

Sous SyncBack, commencez par créer un nouvelle tâche puis renseignez un nom. Choisissez le type de profil "Sauvegarder" puis comme source "FTP".
Remplissez les champs avec vos identifiants de connexion FTP puis cliquez sur le bouton "Tester les paramètres" pour être certain que cela fonctionne.

Une nouvelle fenêtre s'ouvre dans laquelle vous aller spécifier le répertoire source et le répertoire de destination.
Le source correspond à votre dossier sur le FTP (dans notre cas "./_backups/sql/") et la destination, le dossier sur votre ordinateur.

Dans l'onglet "Quand" à gauche, cliquez sur le bouton "Modifier la tâche planifiée" pour ouvrir la fenêtre de planification de la tâche.
Choisissez à quelle heure vous voulez récupérer les sauvegardes SQL et décocher la case "Wake the computer to run the task" si vous ne voulez pas que votre PC s'allume exprès pour lancer la tâche.

Validez et faites un test d'exécution pour vérifier si tout va bien !

Conclusion

Et voilà ! Nous avons créé un script de sauvegarde de notre base de données SQL chez OVH, que nous avons automatisé grâce à une tâche planifiée sur OVH et créé une autre tâche planifiée sur notre PC pour récupérer automatiquement les sauvegardes !

Pensez à tester votre fichier SQL généré en local pour être sûr de son bon fonctionnement !