
Fin 2015 je suis passé de chez 1and1 en hébergement mutualisé à OVH en VPS (Virtual Private Server) pour la gestion de mes différents sites. Je me suis donc lancé sur leur offre VPS SSD et bien que j’en sois très satisfait je trouve qu’elle manque d’une chose importante pour tout admin système: les backups automatique. En effet cette fonctionnalité étant en option j’ai donc opté pour une solution « maison » permettant de mettre en place facilement l’automatisation de backups de sites, bases de données, configurations logicielles, etc. et de les sauvegarder dans n’importe quel cloud.
1. Création de backups journaliers
Dans un premier temps il faut archiver ses sites, pour cela rien de plus simple puisqu’il suffit de créer une tâche CRON journalière par site :
- touch /etc/daily.cron/backup
- chmod +x /etc/daily.cron/backup
- vim /etc/daily.cron/backup
Complétez et collez le code suivant :
#!/bin/sh
THESITE="NOM_DU_SITE"
THEDB="BDD_DU_SITE"
THEDBUSER="root"
THEDBPW="MDP_MYSQL"
THEDATE=`date +%d%m%y%H%M`
mysqldump -u $THEDBUSER -p${THEDBPW} $THEDB | gzip > /var/backups/files/dbbackup_${THEDB}_${THEDATE}.bak.gz
tar -czf /var/backups/files/sitebackup_${THESITE}_${THEDATE}.tar /var/www/vhost/$THESITE
gzip /var/backups/files/sitebackup_${THESITE}_${THEDATE}.tar
find /var/backups/files/site* -mtime +5 -exec rm {} \;
find /var/backups/files/db* -mtime +5 -exec rm {} \;
Dans les premières lignes on définit les paramètres nécessaires à l’archivage : nom du site, nom de la base de données, identifiants de connexion à MySQL.
Ligne 10 on exporte la base de données, puis dans les lignes 12-13 on créé l’archive des fichiers : vous devez également modifier le chemin vers le dossier de votre site par exemple.
Toutes les archives de backups sont donc stockées dans /var/backups/files, les archives vieilles de plus de 5 jours sont effacées pour éviter de prendre trop de place.
J’ai donc un fichier de ce type par site à sauvegarder, mais j’en ai également d’autres que j’ai adapté pour sauvegarder mes configurations nginx par exemple, à vous de décider ce que vous souhaitez sauvegarder 😉
2. Installation de Rclone
Maintenant que les archives sont créées automatiquement, on va installer RClone : un programme en ligne de commande permettant de se connecter à de nombreux services de cloud (Google Drive, amazon S3, Dropbox, Amazon Cloud Drive, Microsoft One Drive, Hubic, etc.) afin de synchroniser des dossiers !
La démarche à suivre est simple :
- Récupérer l’url du fichier binaire de rclone adapté à votre distribution ici : http://rclone.org/downloads/
- Télécharger et installer le binaire sur votre plateforme
Ce qui donne par exemple :
wget http://downloads.rclone.org/rclone-v1.23-linux-amd64.zip
unzip rclone-v1.23-linux-amd64.zip
cd rclone-v1.23-linux-amd64
#copy binary file
sudo cp rclone /usr/sbin/
sudo chown root:root /usr/sbin/rclone
sudo chmod 755 /usr/sbin/rclone
#install manpage
sudo mkdir -p /usr/local/share/man/man1
sudo cp rclone.1 /usr/local/share/man/man1/
sudo mandb
rm rclone-v1.23-linux-amd64.zip
3. Configurer Rclone avec Google Drive (ou le cloud de votre choix)
Maintenant que Rclone est installé, il faut le lier au service cloud de votre choix pour synchroniser vos archives. La documentation d’utilisation est détaillée pour chaque plateforme : par exemple pour utiliser Google Drive j’ai simplement suivi les instructions définies ici.
La démarche est plutôt simple, dans le cas d’un serveur distant il faut choisir « N » à l’option « Use auto config? » : Rclone va vous donner un lien à ouvrir dans votre navigateur afin de l’autoriser à accéder au service souhaité, ce dernier vous donnera alors une clé d’authentification qui sera à renseigner dans le prompt de votre invite de commande.
4. Utiliser Rclone pour synchroniser vos sauvegardes avec votre cloud
Désormais pour synchroniser le dossier « /var/backups/files » de votre serveur vers le dossier « vps_backup » de Google Drive par exemple il suffit d’utiliser la commande :
rclone sync local:/var/backups/files google_drive:vps_backup
Cette commande peut alors être utilisée dans une tâche CRON journalière pour que tout soit automatique 🙂
Bonjour,
Je ne parviens pas à ouvrir l’URL 127.0.0.1:53682 sur mon RPI… J’ai bien Lynx qui est installé mais impossible de l’ouvrir puisque Rclone attend le code.
Hello !
je vois deux solutions possibles :
– utiliser un PC au sein du même réseau local que le RPI et accéder au port indiqué de ton raspberry via le navigateur de cet ordinateur (ex: 192.168.0.X:53682) et poursuivre pour obtenir le code
– au moment où Rclone demande, pendant l’installation, d’utiliser l’auto-config répondre « N » puisque votre RPI est en mode remote/headless
En espérant que ces précisions te soient utiles 😉
Yann