PHP : Système automatique de backup pour vos bases de données

Partager cet article

Temps estimé pour la lecture de cet article : 12 min

Guten tag !

Récemment, j’ai réalisé un système de sauvegarde pour la base de données de borntocode, pour ce faire, j’ai utilisé une tâche cron que j’ai couplée avec un script qui permet d’uploader le fichier directement sur Dropbox.

Sauvegarder votre base de données grâce à mysqldump

Tout d’abord, il nous faut un outil qui va nous permettre de créer une sauvegarde de notre base de données. L’outil mysqldump est capable de le faire et de manière efficace. En plus, il est installé sur les serveurs mutualisés de OVH, que demander de plus !

Pour l’utiliser, il suffit de faire :

mysqldump --host=host --user=user --password=pass bddName > file.sql

On va alors pouvoir appeler cet outil en php, grâce à la fonction system.

Uploader un fichier grâce à la classe DropboxUploader

La classe php DropboxUploader permet d’envoyer des fichiers directement sur votre serveur Dropbox. Elle est très simple d’utilisation :

require 'DropboxUploader.php';
$uploader = new DropboxUploader('email@address.com', 'password');
$uploader->upload('dumps/','file.sql');

On inclut la classe, ensuite on l’instancie en précisant notre adresse mail puis notre mot de passe. Enfin pour uploader un fichier, on utilise la fonction upload. On précise d’abord le dossier où va être uploader le fichier et finalement le nom du fichier.

Réaliser une tâche cron sous un serveur mutualisé OVH

On commence par se rendre sur le manager de OVH. Une fois connecté, on choisit la plateforme pour laquelle on va ajouter la tâche. Dans l’onglet cron, cliquer sur ajouter une planification. Vous aurez alors ceci :

BDD - tache cron

Le premier champ, c’est le chemin vers le script php à exécuter, par exemple ici ce sera le fichier backup.php situé à la racine du site. Ensuite, on précise la version du langage à utiliser. Après les logs par email et la description de la tâche cron.

Sur le second écran, il suffira de choisir quand la tâche sera effectuée et enfin à quelle fréquence. Il suffit ensuite de valider nos choix.

Résultat

Voici, enfin le script final qu’on obtient.

<?
require_once "inc/DropboxUploader.php";
$date = date("d-m-Y");
$filename = "nomDuSite".$date.".sql";
$uploader = new DropboxUploader("john-doe@gmail.com","password");
system("mysqldump --host=host.mysql.db --user=user --password=pass bddName > $filename");
$uploader->upload($filename,"dumps/");
@unlink($filename);
?>

On commence par inclure la classe DropboxUploader, on crée la date du jour avec le format (jour-mois-année), on créé le nom du fichier à partir du nom du site concaténé avec la date du jour. On ouvre une instance de la classe DropboxUploader. On appelle la fonction system de php afin de créer la backup qui nous intéresse, on l’upload sur Dropbox et on supprime le fichier sql restant sur le serveur.

Et voilà, un script rapide et facile à mettre en place, qui permet de toujours avoir une sauvegarde de sa base de données.

Bonnes fêtes à tous !

Laisser un commentaire

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