On est tous d’accord, les sauvegardes, c’est important. Malheureusement, la plupart des CMS ne disposent pas forcément de système de backups intégrés (WordPress / Drupal …)
C’est face à ce constat (et après quelques mésaventures, je vais être honnête), que je me suis résolu à créer un petit script BASH, couplé à une tâche CRON, qui va sauvegarder l’intégralité de mes sites, et les héberger directement dans Google Drive au format zip !
Nous allons voir dans ce pas-à-pas, comment configurer GDrive CLI, se connecter à un FTP distant pour récupérer tous vos sites, les compresser, et les envoyer directement dans le cloud !
1ère étape : Télécharger et configurer GDrive CLI
Gdrive CLI est un projet libre et gratuit, qui fournit une interface en ligne de commande pour interagir efficacement et sans UI avec votre compte Google Drive.
Commencez par télécharger le binaire depuis le repo Github.
Une fois le zip téléchargé. Créez un dossier dans lequel votre script de sauvegarde sera stocké. Et extrayez le zip à l’intérieur.
Il va maintenant falloir configurer GDrive CLI, en lançant un terminal à la racine de ce répertoire, et en tapant la ligne de commande suivante :
gdrive account add
BashVous allez avoir besoin de vos renseigner vos credentials Google. Je vous recommande de suivre le tutoriel de Gdrive CLI officiel afin de les créer !
Une fois la commande lancée et les credentials renseignés, vous disposez maintenant d’un accès à votre Google Drive en ligne de commande, et tout est prêt pour passer à l’étape suivante : la création de notre script Bash !
2ème étape : Créer le script BASH de sauvegarde
Cette partie consiste à créer l’enchainement d’instruction qui va : Se connecter au serveur FTP stockant votre site > Télécharger une copie en local > La compresser en l’horodatant > La téléverser vers le Drive > Supprimer la copie locale.
Pour commencer, rendez-vous dans la racine de votre projet de sauvegarde, à côté du binaire « gdrive » de l’étape précédente, et créez un fichier backup.sh.
Vous allez pouvoir ensuite l’ouvrir avec votre IDE favoris, ou même un éditeur de texte classique (même Vim, pourquoi pas ^^), pour copier-coller le script suivant :
#!/bin/sh
backup_dir=$(date +'%d%m%Y')
echo "[STARTING] Lancement de la sauvegarde, connexion au FTP"
wget -m --user=VOTREUSERFTP --password=VOTREMDPFTP ftp://www/
echo "[DONE] Récupération FTP terminée, compression de la sauvegarde locale ..."
zip -r backup_${backup_dir}.zip ./www/
echo "[DONE] Compression terminée, début de l'envoi vers Google Drive"
./gdrive upload backup_${backup_dir}.zip
echo "[DONE] Sauvegarde terminée, suppression de la copie locale"
rm -r ./www/
BashLe script pourrait se décomposer en 3 parties, à travers ces 3 commandes principales :
- wget, nous utilisons cet utilitaire afin de nous connecter à votre serveur distant via FTP, et télécharger l’intégralité du répertoire www (à adapter en fonction de vos besoins)
- zip, comme son nom l’identique, il nous permet de compresser le répertoire récupéré depuis le serveur, dans un fichier zip avec un nom horodaté (reprenant la valeur de la variable backup_dir déclarée en ligne 2)
- gdrive, comme vous le savez, pour héberger directement la sauvegarde vers votre Google Drive
Il ne vous reste plus qu’à adapter ce code, avec vos propres identifiants, avant de l’exécuter et apprécier votre première sauvegarde 100% automatisée !
3ème étape : Planifiez vos sauvegardes avec CRON
Si vous voulez « pousser le vice au maximum », il est aussi possible de planifier le lancement de ce script de manière automatique, en prévoyant par exemple une sauvegarde tous les vendredi soir à 17h !
Pour cela, vous pouvez utiliser un magnifique outil, disponible et intégré nativement sur Linux : CRON
Cet utilitaire permet de rajouter des « tâches », ou « job », que vous désirez exécuter à un moment précis dans la journée, avec une certaine récurrence !
Voici un tutoriel rapide pour créer votre propre tâche CRON : https://www.linuxtricks.fr/wiki/cron-et-crontab-le-planificateur-de-taches
Limites et conclusion
Ce petit script vous fera (je l’espère) gagner du temps, et sécurisera vos backups, toutefois, il comporte des limites :
- La base de données de votre site ne sera pas sauvegardée, il vous faudra le faire manuellement,
- Un site de + de 10Go ne pourra pas être compressé dans un fichier ZIP (limitation du format de fichier)
En dehors de ces deux points, n’importe quelle structure de site pourra être sauvegardée, et c’est aussi ça qui fait la « force » de ce programme de backup 100% gratuit !
J’espère que cet article vous aura plu, si c’est le cas n’hésitez pas à le partager ou me le dire dans un petit commentaire !
Super! je cherchais ça, merci
Si jamais il y a aussi l’extension
https://updraftplus.com/
qui le fait gratuitement et elle est vraiment pas malOui en effet elle est top en plus !
L’article était un peu plus orienté backup de n’importe quel site, mais en effet en question de plugin WP updraftplus.com est une bonne solution !