Pour simplifier la procédure nous allons créer un partage nfs et un script pour automatiser la sauvegarde.
Ma config:
Un DS716+ Synology – Un Raspberry Pi 4 – Un HDD de 1to + Un HDD de 5 to connectés à un hub alimenté lui même connecté à mon RPi4. Le 1to accueillera le backup du répertoire « photos » de mon Syno. Le 5to accueillera le backup des répertoires « musique » & » sauvegarde » du mon Syno. Tout ceci se passera en Wifi et sera automatisé.
Sur le syno
Il faut commencer par « autoriser » le RPi à monter le(s) répertoire(s) du syno.
On va dans « Panneau de configuration/Dossier partagé ». On sélectionne le répertoire qui devra être sauvegardé sur le RPi, pour l’exemple sélectionnons « music ».
Sur le Raspberry Pi
Je considère comme acquis que le RPi fonctionne et que vous y avez installé une distro basée sur Debian. Perso, c’est Raspbian.
Avant tout, on commence par entrer nos deux commandes favorites de mise à jour:
sudo apt update
sudo apt full-upgrade
Ceci fait il convient de faire en sorte que les deux HDD externes se montent automatiquement au démarrage du RPi.
INITIALISATION DES DISQUES DURS
Évidemment vous devrez brancher un ou plusieurs disques durs externe sur l’un des 4 ports usb du Rpi4 (2 usb2 et 2 usb 3). Précision importante: il existe deux type de HDD externes: les SSD et les disques traditionnels. Le Rpi4 ne dispose pas d’assez de puissance pour alimenter correctement un HDD externe traditionnel. Peut être pour un SSD, bien que je n’ai jamais testé. Je vous conseil donc soit de brancher un hdd disposant de sa propre source d’alimentation (une prise le reliant au secteur) soit de faire l’acquisition, comme moi d’un hub usb alimenté.
Ceci fait, connectez vous en ssh à votre pi depuis votre PC principal, ou bien, si vous êtes sur votre Pi ouvrez un terminal et tapez la commande:
sudo fdisk -l
cette commande vous donnera la liste de l’ensemble des disques connectés au pi, y compris les partitions système sur la sdcard
Nous allons initialiser puis monter les disques durs. Pour se faire nous allons commencer par taper la commande:
sudo fdisk /dev/sda
Cette commande nous permet d’entrer dans l’utilitaire fdisk mais spécifiquement sur le disque /dev/sda
Si nous avions eu plusieurs partitions sur le disque, nous aurions pu
utiliser la commande « d » pour effacer les partitions & en créer
de nouvelle(s).
Dans notre cas nous allons formater le hdd en ext4 (système linux) avec la commande:
sudo mkfs -t ext4 /dev/sda1
Cette commande permet de créer une partition ext4.
Cette opération terminée, vous pourrez la renouveler pour chaque autre disque dur connecté à votre Rpi4 (sdb1, sdc1 etc….)
MONTER LES DISQUES AUTOMATIQUEMENT À CHAQUE DÉMARRAGE DU RPI4
Cette opération est essentielle, car, même si on ne redémarre que très rarement sont Rpi, il est essentiel que l’ensemble des partitions se montent automatiquement à chaque démarrage. Pour se faire nous allons les inscrire dans le fichier fstab.
Avant tout, il va falloir déterminer un point de montage. Un point de montage est un répertoire qui servira « d’accueil » aux partitions de nos hdd externe. C’est ainsi que fonctionne Linux. Souvent ces derniers sont montés dans le répertoire /media. Pour ma part je vais créer 2 répertoires (car j’ai deux hdd externes) et je les souhaites au niveau de mon répertoire racine(« / ») car cela facilitera beaucoup de choses par la suite.
Je nommerai le premier point de montage: 1to et le second: 5to. Pour se faire je vais créer les deux répertoires a la racine de mon système avec les commande suivantes:
sudo mkdir /1to
sudo mkdir /5to
Ces commandes créent nos deux répertoires (points de montage) dans le répertoire racine du système.
Nous allons tester le montage de notre 1er hdd avec la commande:
sudo mount /dev/sda1 /1to
Cette commande s’interprète aisément: sudo pour être utilisateur root, puis « mount » pour « monter », puis le nom du périphérique concerné (/dev/sda1) et enfin son point de montage (/1to)
Évidemment on pourrait en faire de même avec le second hdd avec la commande:
sudo mount /dev/sdb1 /5to
On pourra vérifier l’ensemble des partitions montées sur le système avec la commande:
df -h
Voyons maintenant juste pour la forme, si nous pouvons écrire sur nos partitions. Nous nous plaçons donc dans l’une d’entre elles (« cd /5to » par exemple) et nous utiliserons la commande « touch » qui permet de créer un fichier:
Pour remédier à cela on se place dans le répertoire concerné (« cd /5to ») et on tape la commande suivante!
sudo chmod 777 -R.
sudo pour être super utilisateur. chmod permet de gérer les droits. 777 donne tous les droits à tous les utilisateurs. Le -R indique la récursivité à tous les sous répertoires. Et le point final indique que cette commande s’applique au répertoire courant, celui dans lequel nous nous trouvons.
Il est temps d’inscrire nos points de montage dans fstab:
On redémarre le pi avec la commande « sudo reboot » puis on se reconnecte en ssh pour vérifier que nos deux hdd sont bien montés (si j’ose dire)….;-)
Une fois reconnecté en ssh (ssh pi@ip_de_votre_Rpi4) il suffit de se placer dans chacun des points de montage et de faire une commande ls pour vérifier le contenu qui s’y trouve (vous devriez y retrouver le fichier « test » créé plus haut….
Montage des partages du syno
On commence par créer les répertoires qui vont accueillir les montages du Syno:
sudo mkdir /media/syno_photo
sudo mkdir /media/syno_music
sudo mkdir /media/syno_sauvegarde
On édite le fichier fstab du Rpi:
sudo nano /etc/fsatb
On ajoute les lignes suivantes (autant de lignes que de répertoires à sauvegarder, dans mon cas 3):
#synology_music
Remplacer xx par l’ip de votre synology.
192.168.1.xx:/volume1/music/ /media/syno_zic nfs defaults,user,auto,noatime,intr,rw 0 0
#syno_photos
192.168.1.xx:/volume1/homes/admin/Drive/Moments/photo/ /media/syno_photos nfs defaults,user,auto,noatime,intr,rw 0 0 0
#syno_sauvegarde
192.168.1.xx:/volume1/sauvegarde/ /media/syno_sauvegarde nfs defaults,user,auto,noatime,intr,rw 0 0 0
Redémarrez votre syno et votre RPi, et rendez vous dans votre navigateur de fichiers sur le pi, et vous pourrez voir apparaître les répertoires du syno. ATTENTION, POUR QUE LE SCRIPT FONCTIONNE VOUS DEVREZ CLIQUER SUR CHACUN DES TROIS RÉPERTOIRES AU MOIN UNE FOIS À CHAQUE DÉMARRAGE DU PI.
Rédaction du script:
Nous allons nous attaquer à la rédaction d’un petit script pour sauvegarder mes données sensibles.
Voilà
la situation: je possède un NAS sur lequel je stock mes données dans
divers répertoires. Les plus importants à mes yeux sont: photos,
sauvegarde et musique. Comme nous l’avons vu précédemment nous savons
monter des répertoires partager d’un pc ou d’un nas sur un autre pc ou
nas. Il est donc aisé de programmer un script qui utilisera le protocole
Rsync pour faire ceci. Rsync est installé par défaut dans toutes les
distributions Linux. L’utiliser dans un script bash permet ne pas avoir à
taper la commande Rsync chaque fois qu’on souhaite lancer le script.
Nous verrons dans le chapitre suivant comment automatiser avec crontab.
Rsync fonctionne de la manière suivante:
rsync /répertoire_à_sauvegarder /repertoire_de_destination
Dans mon cas, je souhaite sauvegarder le répertoire photos de mon nas sur le hdd externe 1to de mon Rpi4. Le hdd externe 1to est monté sur /1to. La commande Rsync serait donc la suivante:
rsync -av /media/syno_photos /1toCette commande va sauvegarder le répertoire /media/syno_photos vers le répertoire /1to. Le « v » après le « -a » indique le mode « verbeux » ce qui signifie que vous verrez tout ce que fait rsync dans un terminal. Dans notre cas il ne sera pas nécessaire. nous pourrons donc nous contenter de: rsync -a /media/syno_photos /1to
Voilà, c’est aussi simple que cela. Supposons maintenant que j’ai voulu sauvegarder un répertoire directement depuis mon nas via le protocole ssh. La commande aurait été la suivante:
rsync -a user@ip_de_mon_nas:/repertoire/de/nas/à/sauvegarder /répertoire/du-pi/qui accueil/la-sauvegarde
L’inconvénient c’est qu’il faut être présent physiquement pour entre le mdp du nas. Cette opération peut être automatiser par un échange de clés ssh entre le pi et le nas, mais malgré mon insistance cela n’a jamais fonctionné chez moi. Vous trouverez un excellent tuto sur la chaîne de mon ami américain SpaceRex ici.
Pour pimenter la chose nous allons demander à notre script de noter dans un fichier texte le jour et l’heure de démarrage de la sauvegarde ainsi que la fin (heureuse) de la sauvegarde. Nous utilserons la commande « echo »:
echo « [debut sauvegarde_syno] $(date) » >> /home/pi/Documents/log.txt
rsync -av /media/syno_sauvegarde /5to && echo « [terminé sauvegarde_syno] $(date) » >> /home/pi/Documents/log.txtÇa
parait compliqué mais c’est en fait très simple: « echo » signifie
« écrit ce que je te demande dans le « [….] ». « $(date) » indique qu’il
y ajoutera la date (ce qui inclu l’heure d’ailleurs). le « >> »
lui indique où il doit l’écrire, en l’occurence dans le fichier texte
« log.txt » qui est situé dans « /home/pi/Documents ». Ensuite vous avez
la commande Rsync et enfin le « && » indique que si tout s’est
bien passé alors il passe à la commande suivante, en l’occurrence nous
l’écrire dans le même fichier « log.txt ».
voilà
En ce qui concerne la rédaction elle même du script elle fonctionne ainsi:
#!/bin/bash
echo « [debut sauvegarde_syno] $(date) » >> /home/pi/Documents/log.txt
rsync -av –delete-after /media/syno_sauvegarde /5to && echo
« [terminé sauvegarde_syno] $(date) » >>
/home/pi/Documents/log.txt
echo « [debut photos_syno] $(date) » >> /home/pi/Documents/log.txt
rsync -av /media/syno_photos /1to && echo « [terminé photos_syno] $(date) » >> /home/pi/Documents/log.txt
echo « [debut zic_syno] $(date) » >> /home/pi/Documents/log.txt
rsync -av –delete-after /media/syno_zic /5to &&
echo « [terminé zic] $(date) » >> /home/pi/Documents/log.txtUn
script bash démarre toujours parcequ’on appel le « shebang » (c’est
l’expression qu’on retrouve sur la 1ère ligne: #!/bin/bash. Ensuite j’ai
mit une ligne par sauvegarde que je souhaite effectuer avec une sortie
texte spécifique pour chaque action dans le fichier « log.txt ».
L’option « –delete-after » pemet de supprimer dans la sauvegarde, les
fichiers qui auraient été supprimés de la source entre deux sauvegardes.
J’ai enregistré le script, comme cela est l’usage, avec une extension en .sh et je l’ai rendu exécutable avec la commande:
sudo chmod +x nom_du_script
Je vous conseil de donner un nom assez explicite a votre script, du type: synosauvegarde.sh
Il ne reste plus qu’à lancer le script avec la commande:
sudo /home/pi/Documents/synosauvegarde.sh
Ou bien, si vous êtes déjà dans le répertoire « Documents »:
sudo bash synosauvegarde.sh
AUTOMATISER LES SAUVEGARDES AVEC CRONTAB
Là encore c’est très simple. On lance crontab avec la commande
crontab -e
On choisis l’éditeur de texte, dans notre cas on clic sur 1 (nano)
Pour ce qui me concerne je souhaite une sauvegarde toutes les nuits a 00h00.
Je noterai donc sur la derniere ligne:
00 00 * * * sudo /pi/home/Documents/backupsyno.sh