Sauver les Framboises

image principale Sauver les Framboises

Difficulté:

ou comment réaliser des sauvegardes automatiques de vos raspberry pi vers un NAS


Récemment la carte SD d’une de mes raspberry pi m’a lâchée alors que je n’avais pas de sauvegardes et que je venais d’y passer du temps.
Oh rage, Oh désespoir!
Je n’avais pas de backup à jour car ma solution pour faire des sauvegardes consistait à sortir la carte de la framboise, de la brancher sur mon PC et de faire une copie avec W32DiskImager. Et comme c’est long, je ne le fais pas souvent.
J’ai donc cherché une autre solution.
Et comme j’aurais aimé lire un article traitant de la chose avant de me faire prendre, je vous propose ma solution

Matériel :

Budget : Non défini

  • Et un lieu de sauvegarde. Pour moi c’est un NAS Synology DS213j.
  • Il faut juste des raspberry (et plus il y en a, mieux c’est)

Etape 1 : Sur le NAS

Sur le NAS, créer un dossier partagé sur lequel on va autoriser le protocol NFS.
(quand du linux partage avec du linux, autant utiliser un protocol UNIX)
Avec Synology, c’est simple : on créé le dossier partagé et on édite la règle NFS (pour ma part, j’autorise tous les postes de mon réseau local : “192.168.10.0/24”.

Etape 2 : Sur le raspberry pi

Ouvrer une session en ligne de commande :

Créer un point de montage :

sudo mkdir /mnt/Sauve_NAS
sudo nano /etc/fstab


et y ajouter la ligne :

192.168.10.10:/volume1/Sauve_Rpi        /mnt/Sauve_NAS  nfs     rw,user 0       0


(192.168.10.10 est l’IP de mon NAS)
Puis lancer le montage avec

sudo mount -a


et vérifier que le montage est bien actif:

df -h

Sur un système picore (Raspberry pi + Tiny Code Linux), je montage nfs ne fonctionne pas sans modifier la ligne dans /etc/sftab par :

192.168.10.10:/volume1/Sauve_Rpi        /mnt/Sauve_NAS  nfs     rw,user,addr=192.168.10.10,nolock 0       0
Etape 3 : Placer le script ci joint dans le dossier partagé

Copier le fichier joint dans le dossier partagé.
Modifiez le si vous voulez.

#!/bin/bash
LOGFILE=/mnt/Sauve_NAS/CloneSD.log
DATE=$(date +"%Y-%m-%d")
BoxToClone=$(uname -n)
echo $DATE Debut de la sauvegarde de $BoxToClone >> $LOGFILE
FileName=SD-Backup_$BoxToClone_$DATE.img
File=/mnt/Sauve_NAS/$FileName
dd if=/dev/mmcblk0 bs=1M of=$File >> $LOGFILE && sync >> $LOGFILE

Etape 4 : Automatiser avec CRON

sudo crontab -e -u root


et ajouter la ligne

00 03 * * 1 bash /mnt/Sauve_NAS/CloneSD.sh


pour tous les lundi à 3H00
Pour un système picore : remplacer bash par ash :

00 03 * * 1 ash /mnt/Sauve_NAS/CloneSD.sh
Etape 5 : Et ensuite

Y’a plus rien à faire, juste attendre de faire une con… pour pouvoir remonter une sauvegarde.

En fait il reste encore à supprimer de temps en temps les anciennes sauvegardes.
Je le fais à la main pour le moment, mais si quelqu’un a le courage de rajouter quelques lignes au script pour limiter à un nombre de version, je suis preneur.

Merci fred ! Pas mal ce système de sauvegarde. On pourrais faire ça entre Raspberry pi ? Je me monte mon nas sur un pi b+ redondance sur 2 disques + sauvegarde de la sd des autres raspberry. Tu vois l'idée merci pour le partage !

Merci pour le script qui m'a donné l'idée d'écrire le script suivant afin de faire une sauvegarde de mes Raspberry Pi sur OpenMediaVault (NAS sur Raspberry PI):

#!/bin/bash

##
SERVER=”ipduserveur”
USERNAME=”nom”
PASSWORD=”password”
##
sudo mkdir /mnt/SD-backup
TIMESTAMP=`/bin/date +%Y%m%d%H%M%S`
sudo mount -t cifs -o username=$USERNAME,password=$PASSWORD //$SERVER/storage/SD-backup /mnt/SD-backup
#sudo touch /mnt/SD-backup/backup.log
#sudo chmod 777 /mnt/SD-backup/backup.log
LOGFILE=/mnt/SD-backup/backup.log
NAME=$(uname -n)
echo $TIMESTAMP Start backup $NAME >> $LOGFILE
FILENAME=SD-$NAME_$TIMESTAMP.img
FILE=/mnt/SD-backup/$FILENAME
sudo dd if=/dev/mmcblk0 bs=1M of=$FILE >> $LOGFILE && sync >> $LOGFILE
sudo umount //$SERVER/storage/SD-backup
sudo rm -Rf /mnt/SD-backup

Pour effacer les fichiers de plus que x jours, j'ai trouvé et j'utilise ça:

#############################################################################
## remove files from OUTPUT older than KEEPDAYS days
KEEPDAYS=14
OUTPUT=”/home/luc/Documents/www_backup”
#############################################################################
#http://www.howtogeek.com/howto/ubuntu/delete-files-older-than-x-days-on-linux/
echo Removing files older than $KEEPDAYS days
find $OUTPUT/* -mtime +$KEEPDAYS -exec rm {} ;

Désolé, correction de la ligne:
find $OUTPUT/* -mtime $KEEPDAYS -exec rm {} ;

Pour une raison ( ? ) le backslash en fin de ligne ne passe pas ! Donc, il faut un ‘ ‘ avant le ‘ ; ‘ :
find $OUTPUT/* -mtime $KEEPDAYS -exec rm {} BACKSLASH ;

Ces tutoriels devraient vous plaire

vignette Construire son Bartop Arcade de A à Z
Construire son Bartop Arcade de A à Z
vignette Arduino Uno - Capteur d'humidité au sol.
Arduino Uno - Capteur d'humidité au sol.
vignette Écran Tactile et Raspberry Pi
Écran Tactile et Raspberry Pi

Découvrez tous les tutoriels partagés sur Oui Are Makers

Powered by Oui Are Makers