MultiOS – Sauvegarde a chaud de vos RPI

#OS : PIXEL, MultiOS
#niveau 2
#temps de manipulation : 60 mins environ et selon rpi2 ou 3 et hors mise à jour.
#Outils nécessaires : de la patience
#Pré-requis : connexion internet et un RPi pret

date création : 22/07/2017
date de dernière révision : 22/07/2017

2017 me voila pour une nouvelle série de tutos !
Aujourd’hui, la sauvegarde a chaud de vos RPI directement sur vos NAS !
Nouveauté des tutos, un sommaire !

1 – Coté serveur – Avoir NFS fonctionnel pour recevoir les datas de votre pi
2 – Coté client – Monter le NAS & tester manuellement une premiere sauvegarde
3 – Coté client – Automatiser via crontab avec un script vos sauvegardes et gerer les retentions

Mais avant toutes choses, on ne change rien a nos habitudes, on travaille sur un systeme à jour !

#sudo apt-get update
#sudo apt-get upgrade

1 – Coté serveur – Avoir NFS fonctionnel pour recevoir les datas de votre pi

On commence par tester la présence du paquet sur notre machine :

#dpkg -l | grep nfs-kernel-server

Si c’est présent, on passe a la suite, sinon

#sudo apt-get install nfs-kernel-server

et on ajoute bien sur dans notre fichier « exports » la possibilité a notre (nos) rpi d’écrire sur le chemin désiré
(L’installation détaillée du serveur NFS fera l’objet d’un futur tutoriel ! le web regorge de ceux ci si vous ne trouvez pas!)

On oublie pas de de relancer notre service pour que nos ajouts soient pris en compte :

#sudo service nfs-kernel-server restart

Voila c’est bon notre NAS a son NFS de pret pour recevoir nos sauvegardes !

2 – Coté client – Monter le NAS & tester manuellement une premiere sauvegarde

On commence par tester la présence du paquet sur notre machine :

#dpkg -l | grep nfs-common

Si c’est présent, on passe a la suite, sinon

#sudo apt-get install nfs-common

Maintenant, on monte le partage NFS créé précédement dans notre fstab comme ca, pas de sauvegarde qui partiraient sur la SD source et planteraient le systeme !
#sudo mkdir /media/Backup
#sudo vi /etc/fstab

et on ajoute la ligne selon votre conf – Changez l’IP et les chemins cibles et sources pour cela corresponde a votre install

192.168.1.xxx:/media/monchemin/Backup /media/Backup nfs defaults,noatime,noauto,x-systemd.automount 0 0

on quitte et on monte en vérifiant que l’opération s’est bien réalisée :
#sudo mount -a
#sudo df -h

Voila, maintenant il nous reste a tester une premiere sauvegarde directement de notre RPI vers notre NAS avec la commande suivante (encore une fois a adapter selon votre infrastructure)

#sudo dd if=/dev/mmcblk0 bs=4M | sudo gzip -1 -| sudo dd of=TEST_SAVE_RPI_v1.gz && sync

peu de choses a dire sur cette commande que j’ai récupéré a travers un tuto sur le web
L’image créée sera directement compressée sous forme d’archive. Ce choix ralenti d’environ 25% la réalisation d’une image mais peu allez jsuqu’a compresser par 4 sa taille finale !
Voila, il ne vous reste qu’a patienter 20 a 40 minutes selon l’espace utilisé sur votre SD et la bande passante du lien vers votre NAS
Vous pouvez controler directement sur votre NAS l’apparition de votre .gz.

3 – Coté client – Automatiser via crontab avec un script vos sauvegardes et gerer les retentions

Voila le plus interessant dans ce tutoriel, l’automatisation de vos sauvegardes avec periode de retention :
Attention toutefois, cette partie n’est absolument pas securisée, a vos risques et périls donc

allez hop on verifie puis s’ils ne sont pas présent, on installe les outils necessaire a l’envoi de mail

#sudo apt-get install mailutils mpack ssmtp

et on edite la configuration de client smtp selon son FAI ou smtp souhaité

#sudo vi /etc/ssmtp/ssmtp.conf

root=monLogin@gmail.com
mailhub=smtp.gmail.com:587
hostname=MonSupeRPi
AuthUser= monLogin@gmail.com
AuthPass=monMotdepasse
FromLineOverride=YES
UseSTARTTLS=YES

On quitte en enregistrant, et on teste pardi !

#echo "Le Mail test est bien parti !!!" | mail -s "Test Save RPI" monmailamoi@gmail.com

Maintenant que l’on sait créer une image compressé de notre RPi et que l’on sais s’envoyer une notif par mail, alors il ne nous reste qu’a automatiser cela via un petit script.
J’ai récupéré la « source » de ce script sur le forum officiel Jeedom et l’ai réduit a mes besoins ! Je ne suis pas responsable d’une mauvaise utilisation de ce script et encore moins d’un partage qui ne citerai pas les sources d’origine !

La liste des infos que vous devez personnaliser est :

– localDir= »/media/Backup »
– j=35
– l’arret et la relance des services avant et apres sauvegarde pour eviter de corrompre vos images (j’ai mis quelques exemples)
– le nom de l’image finale « file= »$localDir/$now.baj2bainjeedom.img » »

#!/bin/bash

#Date du jour
now="$(date +"%Y-%m-%d")"
dow="$(date +%w)"
hod="$(date +%H)"

echo "$(date +"%Y-%m-%d %X") : Démarrage backup Mon SupeRPi"

# Emplacemment du dossier de backup local (monté à partir d'un NAS)
localDir="/media/Backup"

# Emplacemment des differents progs utilisés
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
CHOWN="$(which chown)"
CHMOD="$(which chmod)"
GZIP="$(which gzip)"

#nbre de jour de backup a conserver
j=35
j_a_delete=$(date +%Y-%m-%d --date "$j days ago")

echo "$(date +"%Y-%m-%d %X") : Arrêt des services"
#sudo service nginx stop
#sudo service mysql stop
#sudo service Jeedom stop

echo "$(date +"%Y-%m-%d %X") : Dump carte mémoire"
file="$localDir/$now.baj2bainjeedom.img"
#dd if=/dev/mmcblk0 bs=4M | pv -treb | $GZIP --best --stdout --verbose --force > $file.gz
sudo dd if=/dev/mmcblk0 bs=4M | sudo gzip -1 -| sudo dd of=$file.gz && sync

echo "$(date +"%Y-%m-%d %X") : Redémarrage des services"
#sudo service nginx start
#sudo service mysql start
#sudo service Jeedom start

echo "$(date +"%Y-%m-%d %X") : Backup terminé"
echo "Regardes ton NAS ca déboite!!!" | mail -s "Save RPI OK" monmailamoi@gmail.com

Et voila,
plus qu’a mettre en pratique ….. ET en routine 🙂
Courage

Partage cet article !

Laisser un commentaire

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