
Comment sauvegarder Drupal ? Aperçu du module Backup and Migrate
Lors de la création de sites Web, il est souvent nécessaire de sauvegarder rapidement les données qui ne se trouvent pas dans votre référentiel de code. Dans le cas de Drupal, il est possible de générer des copies via le module « Backup and Migrate ».
Ce module offre des options pour les débutants comme pour les utilisateurs avancés. Dans cet article, je vais présenter ses fonctionnalités en détail.
Dates
Le module a été publié à la fin de 2007 pour Drupal 5. Il a depuis été mis à jour de manière extensive. La branche 8.x-3.x est apparue en 2015, avec Drupal 8, cependant elle n'avait pas de version stable. Il a fallu encore trois ans pour que la version stable 8.x-4.0 voie le jour.
Popularité du module
La popularité du module est confirmée par le nombre d'installations - selon les statistiques officielles, il est utilisé par plus de 220 mille pages, dont environ 40 mille basées sur Drupal 8.
Créateurs du module
Quatre développeurs sont responsables de la maintenance du module :
- Damien McKenna de Mediacurrent
- Alexandru Andrascu de Intellix
- Ronan Dowling de Pantheon
- Drew Gorton de Pantheon
Il y a 822 commits dans le référentiel de code, créés par plus de 70 personnes.
À quoi sert le module ?
Backup and Migrate est un outil avancé pour créer des copies de sauvegarde. Il fonctionne sur la base de données, ainsi que sur les fichiers publics et privés. Il s'intègre à Drupal CRON, assurant ainsi la possibilité de faire des sauvegardes régulières vers différentes destinations.
Déballage
Le module est disponible sur https://www.drupal.org/project/backup_migrate. Vous pouvez l'installer à partir d'un fichier .zip ou exécuter la commande composer require drupal/backup_migrate dans la console.
Vous pouvez trouver le panneau d'administration des paramètres dans le menu Configuration → Développement → Backup and Migrate.
Utilisation du module
Le module a été conçu tant pour les débutants que pour les utilisateurs avancés. Les premiers n'ont pas besoin de se plonger dans la configuration de l'exportation des données, ils ont juste besoin d'utiliser l'option de sauvegarde rapide :
Cliquer sur "Sauvegarder maintenant" téléchargera la base de données (ou les fichiers publics/privés sélectionnés dans le champ "Source de sauvegarde"). De plus, la sauvegarde de la base de données sera dépourvue d'entrées de cache et de journaux, elle prendra donc beaucoup moins d'espace.
D'autres paramètres sont disponibles dans l'onglet "Avancé". Je les décrirai plus tard dans l'article.
Sources de sauvegarde
En cliquant sur Paramètres → Sources, vous accéderez à la liste des sources de sauvegarde disponibles.
Par défaut, les sources peuvent être :
- bases de données,
- fichiers publics,
- fichiers privés,
- code de page entier avec une base de données.
Cet ensemble peut être légèrement étendu avec des bases de données MySQL externes et tous les répertoires sur le serveur. Cela peut être fait en utilisant l'option "Ajouter une source de sauvegarde".
Il est possible de définir vos propres sources via l'API du module "Backup and Migrate".
Destinations de sauvegarde
Une destination de sauvegarde est l'endroit où elle doit être mise. Cela peut être, par exemple, un répertoire serveur ou un navigateur web. Les destinations disponibles sont listées dans Paramètres → Destinations.
Comme pour les sources, vous pouvez définir vos propres destinations via le bouton "Ajouter une destination de sauvegarde" et un hook correspondant. À la fin de l'article, je présente certains modules d'ajout de destinations comme SFTP Server et S3 Cloud.
Chiffrement
Rappelez-vous que les sauvegardes contiennent des données sensibles et que l'accès à celles-ci doit être strictement limité. Drupal est l'un des CMS les plus sécurisés disponibles, il vaut donc la peine d'utiliser son système de fichiers privé. De plus, la possibilité de chiffrer les fichiers avec les sauvegardes est très pratique. Pour l'utiliser, ajoutez la bibliothèque Defuse au projet en utilisant la commande :
composer require defuse/php-encryption
Après avoir vidé le cache, l'option "Chiffrer le fichier" apparaîtra dans le panneau de configuration du module avec le champ pour entrer un mot de passe. Il sera utilisé pour chiffrer les archives générées.
Sauvegarde avancée
J'ai déjà expliqué comment créer une sauvegarde rapide. Il est temps pour sa version légèrement plus avancée, que vous pouvez trouver dans l'onglet "Backup" → "Advanced Backup".
Voici un aperçu rapide des options disponibles :
- Source - utilisé pour sélectionner une source prédéfinie.
- Fichier de sauvegarde - vous permet de configurer le nom et le format du fichier de sauvegarde.
- Chiffrement de sauvegarde - active le chiffrement de l'archive.
- Mettre le site hors ligne - désactive le site lors de la création de sa sauvegarde.
- Exclure les tables de la base de données - vous permet d'exclure des tables sélectionnées dans la base de données (ou seulement leur contenu) de la sauvegarde.
- Exclure les fichiers - utilisé pour exclure des fichiers sélectionnés lors de la création d'une copie de répertoire.
- Destination - vous permet de sélectionner la destination de la sauvegarde.
Si vous souhaitez enregistrer un tel ensemble d'options avancées pour l'avenir, jetez un coup d'œil aux profils dans l'onglet "Paramètres" → "Profils de paramètres".
Liste de sauvegarde
Toutes les sauvegardes sur le serveur sont listées dans la liste "Sauvegardes Enregistrées".
Fait intéressant, cette liste fonctionne également lors de l'enregistrement des sauvegardes sur les serveurs SFTP et S3.
Restauration de sauvegarde
Option moins fréquemment nécessaire, mais néanmoins extrêmement intéressante, est de restaurer le site Web à partir d'une sauvegarde. À cette fin, vous pouvez utiliser l'une des copies de la liste présentée ci-dessus ou télécharger n'importe quel fichier via le formulaire.
Planification
La dernière fonctionnalité importante du module Backup and Migrate est la possibilité de créer des plannings de sauvegarde.
Ici, vous avez tout ce dont vous avez besoin pour construire un mécanisme de sauvegarde efficace. Ces actions sont réalisées à l'aide des fonctionnalités CRON de Drupal. Par conséquent, aucune configuration supplémentaire du serveur n'est nécessaire.
Hooks et intégrations
Backup and Migrate offre un hook de base hook_backup_migrate_service_object_alter(), vous permettant de changer pratiquement tout le moteur du module. C'est ici que des plugins et filtres supplémentaires sont définis. Vous pouvez définir les éléments suivants :
- Sources de sauvegarde - par défaut, il s'agit de la base de données, des fichiers publics/privés et de l'ensemble du site Web avec le code source.
- Destinations de sauvegarde - telles que le stockage en cloud ou le stockage en répertoire local.
- Filtres modifiant les archives générées - par exemple le chiffrement.
Sur la base du mécanisme ci-dessus, de nombreux modules auxiliaires offrant une intégration avec des fournisseurs externes d'espace disque ont été créés. Malheureusement, la plupart d'entre eux fonctionnent uniquement sous le contrôle de Drupal 7. Ceux-ci incluent :
- Backup and Migrate AWS S3 - ajoute la prise en charge des serveurs Amazon S3.
- Backup and Migrate Flysystem - ajoute la prise en charge de Flysystem.
- Backup and Migrate Yandex Disk - ajoute la prise en charge gratuite de Yandex Disk.
- Backup and Migrate Prune (Drupal 7 uniquement) - supprime les anciennes sauvegardes conformément aux règles spécifiées par l'utilisateur.
- Backup and Migrate SFTP (Drupal 7 uniquement) - vous permet de sauvegarder des fichiers sur le serveur SFTP.
- Backup and Migrate Dropbox (Drupal 7 uniquement) - ajoute la prise en charge de Dropbox.
- Backup and Migrate OpenCloud (Drupal 7 uniquement) - ajoute la prise en charge d'OpenCloud.
- HPCloud (Drupal 7 uniquement) - ajoute la prise en charge de HP Cloud.
Résumé
Face aux nouvelles technologies, le module Backup and Migrate est parfois considéré comme redondant. Cependant, nous l'utilisons dans notre agence Drupal car il offre le moyen le plus simple de télécharger une base de données et des fichiers à partir d'un site Web basé sur Drupal. Il est facile à configurer et fonctionne presque immédiatement.
Dans le cas de sites Web plus petits, le module peut être utile comme complément à une sauvegarde standard. Surtout lorsque le code est sur un serveur partagé où vous n'avez pas le contrôle total du système.