Automatiser la sauvegarde de la carte SD

scripts
tutoriel

#1

Bonjour à tous,

j’ai vu qu’un certain nombre de personnes se demandaient comment sauvegarder leur carte SD.

Pendant un certain temps, j’ai utilisé la méthode :

Arrêt du Raspberry;
Sortir la carte SD;
Outil de copie (etcher);
Remettre la carte SD puis rallumer le tout
Plutôt lourd et ennuyeux :crazy_face:

Et en cherchant un peu j’ai trouvé une autre méthode (copie de/dev/mmcblk0) , qui permet de sauvegarder sur un partage pendant la nuit sans avoir à sortir cette :floppy_disk: :gun: carte SD du raspberry.

  1. accéder à gladys en ssh (ssh pi@192.168.xxx.xxx)

  2. modifier le fstab (sudo nano /etc/fstab)

  3. Ajouter le partage, le NAS, par exemple la freebox
    //192.168.0.254/Disque\040dur/ /media/freebox cifs netdev,rw,users,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777 0 3

  4. Créer le répertoire sur le rpi sur lequel on a lié le NAS
    sudo mkdir -p /media/freebox
    et installer les paquets cifs-utils et samba-common

  5. sudo mount -a

  6. Créer un répertoire pour vos scripts
    sudo mkdir -p /home/pi/scripts

  7. Ajouter le script de sauvegarde
    sudo nano /home/pi/scripts/sauvegarde.sh

Exemple de script bash :

#!/bin/bash
datejour=$(date +'%Y%m%d')
#SAUVEGARDE CARTE SD GLADYS
sudo dd if=/dev/mmcblk0 bs=4M of=/media/freebox/Téléchargements/$datejour"_gladys.img"
tar -czf /media/freebox/Téléchargements/$datejour"_gladys.tar.gz" /media/freebox/Téléchargements/$datejour"_gladys.img"
rm -f /media/freebox/Téléchargements/$datejour"_gladys.img"
  1. Modifier les droits des répertoires et rendre script exécutable
    sudo chown -Rf pi: /home/pi/scripts
    sudo chmod +x /home/pi/scripts/sauvegarde.sh
    sudo chown pi:4242 /media/freebox

  2. Créer le crontab pour lancer le script
    sudo nano /etc/crontab
    00 23 * * * root cd /home/pi/scripts/sauvegarde/ && ./sauvegarde.sh

Je l’utilise depuis quelques semaines. Je viens de replaquer une sauvegarde sur une nouvelle carte SD (gladys 3.8.0) et je viens de la passer en 3.8.1.
Et tout fonctionne nickel :grinning:


#2

Pourquoi ne pas en faire un module :slight_smile: ?

Merci beaucoup en tout cas @zeTony !
Cela va me servir de suite :smiley:


#3

C’est pas trop long ? Et gourmand en proc ?
Parce que sous le mac, ça m’a pris presqu’une heure je crois pour copier la carte SD…


#4

Hello,

D’un point de vue personnel, je préfère sortir la sauvegarde de Gladys. Je préfère qu’elle soit au niveau du système.

Donc je ne pense pas en faire un module. Mais libre à chacun d’en faire ce qu’il veut.


#5

Je lance la sauvegarde à 23h00 et tous mes fichiers compressés sur la freebox indiquent une fin à 23h28.

Mais même en faisant une copie de la carte SD en la sortant, je n’ai jamais mis une heure.
Dans mon cas 28 minutes pour 16 Go et un tar.gz en sortie de 5.1 Go.

Sur mon RPI3, j’ai un load average max de 2 pour 4 coeurs.
De plus le fait de le lancer la nuit, il n’y a pas d’activité à la maison.


#6

Effectivement ton point de vue ce tien :slight_smile:.
Merci en tout cas !


#7

Top ! Merci pour ton tutoriel @zeTony ! :slight_smile: Je partage le tutoriel sur Twitter !


#8

Je cherche a faire ma sauvegarde sur mon NAS Synology,
Le problème c’est que je ne sais pas mapper le dossier du NAS sur mon RPI.
@zeTony Peux tu m’indiquer la marche a suivre s’il te plait ?


#9

Salut,
je viens de voir que tu avais un problème pour monter ton NAS sur RPI.
J’ai un peu de temps.
Tu bloques où ?


#10

oups je n’avais pas fait attention à ton retour,
J’ai ajouter mon partage dans fstab:

//IP.DE.MON.NAS:/volume1/GladysBackup /media/synology cifs netdev,rw,users,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777 0 3

j’ai créé le répertoire /media/synology sur mon rasp, j’ai bien modifier toutes les commandes avec /media/freebox par /media/synology

j’ai créé le bash sans le “Blockquote” de ton exemple (une erreur ?)

les droits sont upd,

Mais lorsque je lance le bash manuellement j’ai ça :

pi@gladys:~/scripts $ ./sauvegarde.sh
dd: impossible d’ouvrir ‘/media/synology/Téléchargements/’20180617’_gladys.img’: Aucun fichier ou dossier de ce type
tar: Suppression de « / » au début des noms des membrestar (child): /media/synology/Téléchargements/’20180617’_gladys.tar.gz : open impossible: Aucun fichier ou dossier de ce type
tar (child): Error is not recoverable: exiting now
tar: /media/synology/Téléchargements/’20180617’_gladys.img : stat impossible: Aucun fichier ou dossier de ce type
tar: /media/synology/Téléchargements/’20180617’_gladys.tar.gz : write impossible: Relais brisé (pipe)
tar: Child returned status 2
tar: Error is not recoverable: exiting now


#11

Re,

dans dd je vois que tu as laissé Téléchargements.Tu as bien un répertoire qui s’appelle Téléchargements sur ton NAS.

Là dd cherche à écrire dans ton NAS, dans le répertoire /volume1/GladysBackup/Téléchargements.

Après les autres erreurs sont liées à cet emplacement.


#12

Je te confirme bien Qui l y a un dossier Téléchargements
En revanche quand je vais dans media/synology je lai pas ce dossier


#13

SI tu te connectes en SSH sur ton rpi, et que tu fais la commande df -h est ce que tu vois une ligne de ce style:

//192.168.0.254/Disque dur/ 229G 147G 71G 68% /media/freebox

mais avec ton nas synology.

Sinon essaye d’installer cifs-utils et samba-common.
Ensuite fait un:
sudo mount -a


#14

J’ai trouvé cela sur internet qui correspond à mes attentes : sauvegarder sur du “cloud”.

Par contre dans ce script, il prend le temps de couper quelques services. Utile ?
Et si utilité il y a, il faut adapter à Gladys avec lesquels ?


#15

Merci beaucoup j’ai eu pas mal de soucis pour le montage :

mount error(95): Operation not supported
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

J’ai alors chercher sur le net et il me suffisait juste d’ajouter -o vers=1.0 :
https://forum.ubuntu-fr.org/viewtopic.php?pid=21853200#p21853200

Merci beaucoup =D


#16

Bonjour, j’essaie aussi de mettre en place cette automatisation mais j’obtiens la meme erreur que spencer et si j’ajoute ce qui est dit j’obtiens:

mount: /etc/fstab: parse error at line 11 -- ignored

J’ai aussi essayé de modifier vers=1.0 en vers=4 puis en vers=4.5 (vu que ma version de smb est 4.5.12) mais j’obtiens les mêmes résultats

Merci d’avance pour votre aide


#17

Peux tu nous montré ta ligne stp ?


#18

Si j’ai bien compris le tutoriel et que je suis son exemple, j’insère cette ligne dans fstab:

//192.168.1.10/Users/pc-salon/Documents/save_rpi_gladys /media/save_gladys cifs netdev,rw,users,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777 0 3

erreur :

mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

je lance tail -f /var/log/kern.log qui me retourne:

 Oct 18 20:46:09 gladys kernel: [ 3846.648412] CIFS: Unknown mount option "netdev"

Je fouine sur google et je vois que ce n’est pas netdev mais _netdev (petite erreur sur le tuto on dirait :wink: )
Je modifie en conséquence je relance mon mount, même genre d’erreur, jfile voir kern.log …

Oct 18 21:33:12 gladys kernel: [ 6670.136917] No dialect specified on mount. Default has changed to a more secure dialect, SMB2.1 or later (e.g. SMB3), from CIFS (SMB1). To use the less secure SMB1 dialect to access old servers which do not support SMB3 (or SMB2.1) specify vers=1.0 on mount.

J’ajoute donc vers=1.0 dans ma ligne et maintenant quand je lance le mount j’ai dans putty

mount error(13): Permission denied
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)

et dans kern.log

Oct 18 22:10:39 gladys kernel: [ 8917.210051] Status code returned 0xc0000022 STATUS_ACCESS_DENIED
Oct 18 22:10:39 gladys kernel: [ 8917.210102] CIFS VFS: Send error in SessSetup = -13
Oct 18 22:10:39 gladys kernel: [ 8917.210163] CIFS VFS: cifs_mount failed w/return code = -13

Je continues mes recherches :slight_smile: , voici ma ligne:

 \\192.168.1.***\save_rpi_gladys /media/save_gladys cifs _netdev,rw,users,iocharset=utf8,uid=1000,sec=none,file_mode=0777,dir_mode=0777,vers=1.0 0 3

#19

save_rpi_gladys est un dossier en partage ?


#20

Bonjour,
en effet erreur sur _netdev. Je vois pour corriger.
Pour le reste la ligne sur le tuto fonctionne toujours chez moi.

Sur ta ligne je vois que tu commences avec \ alors que linux utilise plutôt // . Je tenterai //192.168.1.***/ save_rpi_gladys /media/save_gladys cifs

Sur mon pi j’ai ces versions :
cifs-utils 2:6.7-1
samba-common 2:4.5.12+dfsg-2+deb9u1