Page 1 sur 3

[Tuto] Backup carte SD complète sur nas avec envoi mail

Publié : 12 nov. 2016, 12:37
par n1c0l45
Tout d'abord, je tiens a préciser que ce tuto est une modification pour mes besoins du tuto de "Jose" sur comment faire un backup complet sur freebox V6 avec envoi de SMS chez Free. Merci à lui pour son travail!

Image
J'ai fait ces modifications car:
- je n'ai pas de ligne freemobile je ne pouvais pas recevoir de SMS par l'API free
- j'ai une freebox v6.. mais j'ai aussi un Nas synology en qui j'ai beaucoup plus confiance

Donc pour résumer, ce script fait un backup complet de la SD avec pigz (beaucoup plus rapide et multi-coeur, merci Cissou) pour l'info, l'envoi sur votre NAS et vous informe par email de l'avancement du backup.

Préalable:
-Avoir créé sur le nas un compte pour la sauvegarde
-Avoir créé sur le nas un dossier de sauvegarde (backup_domoticz dans cet exemple)
- que le nas soit allumé???!!


Pour commencer, mettez à jour votre système

Code : Tout sélectionner

sudo apt-get update

Code : Tout sélectionner

sudo apt-get upgrade
Installez la solution pour envoyer des emails

Code : Tout sélectionner

sudo apt-get install mailutils mpack

Code : Tout sélectionner

sudo apt-get install heirloom-mailx

Code : Tout sélectionner

sudo apt-get install ssmtp
Editez le fichier ssmtp.conf

Code : Tout sélectionner

sudo nano /etc/ssmtp/ssmtp.conf
Indiquez les paramètres SMTP (Free dans l'exemple)
mailhub=smtp.free.fr
FromLineOverride=YES
Editez le fichier "revaliases"

Code : Tout sélectionner

sudo nano /etc/ssmtp/revaliases
Ajoutez ça au fichier (modifiez comme vous voulez l'adresse de l’expéditeur suivant le user envoyant le mail)
pi:maison@domoticz.com:smtp.free.fr
root:maison_root@domoticz.com:smtp.free.fr
Vous pouvez tester que cela fonctionne (remplacer votre mail)

Code : Tout sélectionner

echo "Contenu du mail" | mail -s "Titre du mail" EMAIL@DOMAINE.com

Maintenant que vous avez un serveur mail fonctionnel, on va configurer la sauvegarde

Installez le soft de compression "Pigz"

Code : Tout sélectionner

sudo apt-get install pigz
Créez un dossier de montage pour votre backup

Code : Tout sélectionner

sudo mkdir /mnt/nas_backup
Vérifiez que votre carte SD a bien le nom "mmcblk0" en faisant (sinon faudra changer le nom dans le script:

Code : Tout sélectionner

sudo fdisk -l
Créez un fichier script backup_image.sh

Code : Tout sélectionner

nano backup_image.sh
et copiez collez cela dedans
#!/bin/sh
#############
# Script de sauvegarde de l'image complète du serveur Domoticz sur nas et envoi de mail
#############

# Formatage de la date début et de l'heure
DATE_DEBUT=`date +%d-%m-%Y`
H_DEPART=`date +%H:%M:%S`
DEBUT_EN_SEC=$(($(echo $H_DEPART | cut -d':' -f1)*3600+$(echo $H_DEPART | cut -d':' -f2)*60+$(echo $H_DEPART | cut -d':' -f3)))

# Transmission d'un premier mail
message=${DATE_DEBUT}' '$H_DEPART' Début de sauvegarde domoticz.'
echo "$message" | mail -s "$message" email@domaine.com

echo "Montage du nas"
/sbin/mount.cifs //IP_NAS/backup_domoticz/ /mnt/nas_backup/ -o user=user_nas,pass=pass_nas

echo "Sauvegarde sur le nas"
dd if=/dev/mmcblk0 | pigz -9 -p 3 > /mnt/nas_backup/srv-domoticz-${DATE_DEBUT}'-'$H_DEPART.img.gz


echo "Démontage du nas"
/bin/umount /mnt/nas_backup

# Formatage de la date de fin et de l'heure
DATE_FIN=`date +%d-%m-%Y`
H_FIN=`date +%H:%M:%S`

# Découpe pour mise en seconde
FIN_EN_SEC=$(($(echo $H_FIN | cut -d':' -f1)*3600+$(echo $H_FIN | cut -d':' -f2)*60+$(echo $H_FIN | cut -d':' -f3)))

# Calcul de la durée d’exécution
DUREE_EN_SEC=$(($FIN_EN_SEC-$DEBUT_EN_SEC))

# Remise en Heure - Minute - Seconde
DUREE_H=$(($DUREE_EN_SEC/3600))
DUREE_M=$((($DUREE_EN_SEC%3600)/60))
DUREE_S=$((($DUREE_EN_SEC%3600)%60))

# Transmission sms avec heure de fin et la durée
message=${DATE_FIN}' '$H_FIN' Fin de sauvegarde domoticz. Durée '$DUREE_H':'$DUREE_M':'$DUREE_S
echo "$message" | mail -s "$message" email@domaine.com
faites la personnalisation du script suivant vos besoins:
- email@domaine.com ==> votre email
- IP_NAS
- user_nas
- pass_nas

enregistrez votre fichier modifié

rendez le script exécutable
chmod +x backup_image.sh
lancez le script pour le tester
sudo ./backup_image.sh
après, un petit cron (crontab -e) vous permettra de définir vos intervalles de sauvegardes

Code : Tout sélectionner

0 0 * * 1,4 root /backup_image.sh
dans mon cas le lundi et le jeudi (je bidouille pas mal le WE, donc sauvegarde le lundi des modifs du WE et sauvegarde le jeudi avant les bêtises "possibles" du WE ;))

J’espère n'avoir rien oublié

Bonne journée

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 12 nov. 2016, 14:07
par itcitc77
merci pour se tuto, je vais essayer

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 12 nov. 2016, 19:14
par slybreiz
merci pour le scripte

et du coup pour la restauration ça se passe comment :p

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 12 nov. 2016, 20:15
par fabienp
Salut, merci pour ce script!

j'ai commencé a testé, la je dois partir donc je continuerai demain matin, mais j'ai commence a rencontré des erreurs.
pour IP_NAS, on doit mettre le port?

coté NAS, on créé juste un dossier partagé? ( "backup_domoticz" d'aprés ton exemple)
on peut utiliser notre compte admin existant?

EDIT : je reprend ce matin :
j'ai une erreur :

Code : Tout sélectionner

pi@raspberrypi:~ $ sudo ./backup_image.sh
./backup_image.sh: 10: ./backup_image.sh: arithmetic expression: expecting EOF:           "09*3600+28*60+31"
j'ai désactivé la ligne concerné "DEBUT _EN_SEC par un #
du coup ça a passer ce blocage
je continue et je reviens dire si ça marche bien :)

EDIT 2 :
ça a marché! mais par contre les 2 lignes qui convertisse l'heure en seconde (début et fin) font planter le script, ligne 10 et 31, message d'erreur le même qu'au dessus

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 13 nov. 2016, 15:08
par n1c0l45
Il n'y a pas de port à rentrer, on passe par le partage réseau
Par contre je te conseille vivement de créer un utilisateur sur ton nas qui ne servira qu'à ça, sinon tes identifiants administratives seront visibles dans ton raspberry !


Pour l'erreur sur l'heure jeoense que ton problème vient d'un mauvais copier coller, regardes dans le poste d'origine, quelqu'un avait le même soucis

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 13 nov. 2016, 18:39
par fabienp
oui merci du conseil, je viens de créé un utilsiateurs dédié sur le nas, avec uniquement des droits d'écriture dans le dossier concerné, c'est vrai que ça apparait en clair :o

par contre pour l'erreur sur la ligne "debut_en_sec" et fin fredclo a eu le même problème, ce n'étais pas non plus un soucis de copié collé pour lui, il a fait comme moi, il a shunter les lignes en questions. J'ai revérifié la ligne est la même, pas d'erreur de copie, ni de copie sur 2 lignes comme énoncé.
je comprend pas d'ou viens le soucis du coup.

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 11 déc. 2016, 14:41
par fabienp
Bonjour,,

je viens de faire évoluer mon système domotique, sur le raspberry, je garde la carte microsd pour le boot, puis le RFS est sur un ssd en usb.
Du coup je me posais la question, comment modifié ce script qui marchait bien chez moi avec mon nouveau système?

Je suppose que c'est à ce niveau :
echo "Sauvegarde sur le nas"
dd if=/dev/mmcblk0 | pigz -9 -p 3 > /mnt/nas_backup/srv-domoticz-${DATE_DEBUT}'-'$H_DEPART.img.gz
mes partitions carte micro sd (j'ai conservé pour le moment la partition d'origine rfs, comme j'ai monté tout ça ce matin, c'est en cas de pépin) :
Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 8192 131071 122880 60M c W95 FAT32 (LBA) (boot qui est actuellement utilisé)
/dev/mmcblk0p2 131072 15523839 15392768 7,3G 83 Linux (ancien rfs = > sauvegarde de secours)
mes partitions sur l'usb :
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 194559 192512 94M c W95 FAT32 (LBA) (partition de boot, en vue de booté entièrement sur l'usb, mais je rencontre des difficultés)
/dev/sda2 194560 234440703 234246144 111,7G 83 Linux (nouveau rfs utilisé)
du coup la solutions serait peut être de faire 2 script pour 2 images ? une pour le boot sur micro SD, l'autre pour le rfs sur ssd via usb?
echo "Sauvegarde sur le nas"
dd if=/dev/mmcblk0p1 | pigz -9 -p 3 > /mnt/nas_backup/srv-domoticz-boot-${DATE_DEBUT}'-'$H_DEPART.img.gz
et
echo "Sauvegarde sur le nas"
dd if=/dev/sda2 | pigz -9 -p 3 > /mnt/nas_backup/srv-domoticz-rfs-${DATE_DEBUT}'-'$H_DEPART.img.gz
en gras les modifs, vous en pensez quoi?

merci d'avance pour votre aide

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 11 déc. 2016, 21:44
par fabienp
je m'auto répond au cas ou ça serve à quelqu'un :

en un seul script ça marche, j'ai fait ça :

Code : Tout sélectionner

#echo "Sauvegarde sur le nas"
#dd if=/dev/mmcblk0 | pigz -9 -p 3 > /mnt/nas_backup/srv-domoticz-${DATE_DEBUT}'-'$H_DEPART.img.gz
# début de mes modifs perso
echo "Sauvegarde sur le nas de la partition boot sur carte microSD"
dd if=/dev/mmcblk0p1 | pigz -9 -p 3 > /mnt/nas_backup/srv-domoticz-boot-${DATE_DEBUT}'-'$H_DEPART.img.gz
echo "Sauvegarde sur le nas de la partition RFS sur SSD via usb"
dd if=/dev/sda2 | pigz -9 -p 3 > /mnt/nas_backup/srv-domoticz-rfs-${DATE_DEBUT}'-'$H_DEPART.img.gz
#fin de mes modifs perso

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 03 janv. 2017, 00:31
par n1c0l45
Yep! C'est ça !

Re: Backup carte SD complète sur nas avec envoi mail

Publié : 04 mai 2017, 14:43
par yanael
je vais tenter ca de mon coté :)