Backup entre deux nas synology

La question pourrait paraître stupide tant l’internet regorge de tutos expliquant cette (ou plutôt ces) manipulation(s).

Cependant je me suis rapidement trouvé confronté à des problèmes eu égard au résultat que je cherchais et que je n’arrivais pas à trouver.

En effet, l’outil principal chez Synology pour faire des backups est Hyper Backup, et celui ci propose pléthore d’options. Les deux principales lorsqu’il s’agit de sauvegarder un nas syno vers un autre nas syno sont:

  •   Périphérique nas distant
  •  Rsync

Hors le premier fait la sauvegarde dans un format propriétaire (dont j’ai oublié le nom) ce qui rends impossible l’utilisation des données brut à l’instant « T » et le seconds crée automatiquement un sous répertoire dans le répertoire de destination pour accueillir le backup.

Cela ne me conviens pas.

Je souhaite avoir deux nas identiques en terme d’arborescence, de données et d’applications qui tournent dessus. En effet si l’un venait à lâcher le second pourrait immédiatement le remplacer sans aucune manipulation supplémentaire.

Concernant Rsync, j’ai posé la question à Synology sur l’intérêt de la création de se répertoire supplémentaire et il m’a été répondu que c’était ainsi et qu’on y pouvait rien…

Bref: la loose!!

Heureusement, hier soir, apès avoir posté ma demande sur le forum Synology Français, j’ai eu la lumière…. J’ai pensé à une méthode; que j’ai testé cette nuit, et qui réponds totalement à mes besoins:

  • Pas de création de répertoire inutile
  • pas de backup dans un format étrange.

Voilà comment j’ai fait…..

Tout d'abord il faut disposer d'un Raspberry Pi

Le raspberry Pi, sur lequel je ne reviens pas, est un véritable outil EXTRAORDINNAIRE. Il m’a sorti des dizaines de fois de situations à priori inextricables… ce fût encore le cas hier soir…

Ma Méthode

Je dispose de plusieurs Raspberry Pi que j’utilise, pour certains, à la découverte de nouvelles fonctions, et pour d’autre au backups de certains répertoires de mes nas (partant du principe qu’en informatique, la redondance de l’info est mère de toute sureté).

Hors pour mes backups depuis un Syno vers un Rpi j’utilise depuis longtemps une méthode éprouvée:

  • Je monte les répertoires du Syno (ceux que je souhaite backuper) sur le Raspberry Pi, avec le protocole NFS.
  • Bien sûr les points de montages sont inscrits dans le fichier « fstab » du Rpi.
  • Cela me permet de faire un backup en local à l’aide d’un script Rsync et d’une programmation dans Crontab.

Je me suis donc demandé hier soir, si en montant l’ensemble des répertoires de mes deux syno sur l’un de mes raspberry pi, je pourrais faire des backups rsync entre les répertoires des deux syno…. (je vais être clair juste après…

Arborescence de mes Syno

Comme pour beaucoup de personnes mes nas me servent à sauvegarder mes données (photos, vidéos, factures, documents médicaux etc….) Mais aussi à stocker toute ma musique et tous mes films et séries…

Comme beaucoup j’utilise Plex (avec un abonnement à vie), Docker et toutes les applis synology (notamment pour sauvegarder le contenu de mon smartphone en automatique vers les répertoires correspondants de mon nas.

On va donc retrouver les répertoires suivants au sein de mes nas:

  • Docker
  • Documents
  • Homes (avec tout ce qui va dedans)
  • Musique
  • Ondrive
  • Sauvegarde
  • Téléchargements
  • Vidéos

Il est évident que les méthodes proposées par Synology ne me permettent pas d’avoir une copie parfaite de deux synology pour pouvoir basculer de l’un à l’autre à tout moment.

 

Process

  • On va activer le protocole NFS sur les deux Syno.
  • Accorder les droits d’accès pour chaque répertoire à notre Raspberry Pi
  • Créer (sur le Rpi) des points de montage pour chaque répertoire de chaque Synology
  • Créer un script rsync
  • Tester le script
  • Créer une tâche Cron pour automatiser les sauvegardes

Je le rappel: le script (sur le raspberry pi) va copier des données depuis un point de montage (d’un répertoire du syno A) vers un autre point de montage (d’un répertoire du syno B). Tout ça exclusivemment sur le Rpi.

On y va….

Sur les syno (A & B)

On commence par aller sur le syno A dans « panneau de configuration/dossiers partagés« 

On se positionne sur le premier répertoire qu’on suhaite sauvegarder (on le met en surbrillance) puis « Modifier/autorisations NFS/créer« 

Dans la fenêtre qui s’ouvre, on tape en haut l’adresse ip du raspberry pi (vous pouvez la copier dans le presse papier, elle va resservir!) puis on rempli les cases comme suit:

  • Privilège: lecture/écriture
  • Squash: mapper tous les utilisateurs sur admin
  • Sécurité: sys
  • Et on coche les 3 cases du dessous
  • On sauvegarde une première fois, puis une seconde fois.

Sur le Syno A, on répète l’opération pour chaque répertoire partagé que l’on souhaite sauvegarder.

 

Un fois terminé, on fait la même chose sur le syno B avec les répertoires qui accueilleront les sauvegardes.

Sur le Raspberry Pi

On comence par se connecter au Rpi en ssh, on met à jour et on installe le paquet nfs-common:

ssh pi@adresse_ip_du_pi

sudo apt update && sudo apt upgrade -y && sudo apt install nfs-common -y

Ceci fait nous allons créer les répertoires qui serviront de points de montages aux répertoires de nos deux synology. Perso je les met dans /media

sudo mkdir /media/synoA_docker

sudo mkdir /media/synoA_documents

Et on répète l’opération pour tous les répertoires du syno A, puis du syno B.

tant et si bien que lorsqu’on fera un « ls » du répertoire /media, on devrait retrouver tous les répertoires crées.

FSTAB:

L’intérêt d’une telle méthode serait très limité si à chaque redémarrage du Rpi, il fallait remonter tous les répertoires distants. C’est à cela que sert fstab. Il permet un montage automatique de tous les répertoires à chaque démarrage.

On va lui apporter quelques modifications.

Toujours en ssh sur le raspberry pi on tape la commande suivante:

sudo nano /etc/fstab

On se retrouve au sein du fameux fstab.

On se rends à la fin du fichier et on ajoute une ligne par point de montage sur le modèle suivant:

ip_du_nas_A:/répertoire/du/nasA/ /repertoire/du/nasB nfs defaults,user,auto,noatime,intr,rw 0 0

Plus concrètement, si votre nas A est à l’adresse ip: 192.168.1.20 et que vous voulez sauvegarder le réperoire /volume1/docker, alors votre ligne dans fstab sera:

#SynoA docker (lorsqu’une ligne est commentée (avec un diese en début de ligne) elle n’est pas lue par fstab. cela permet de ne pas vous perdre lorsque vous relirez votre fstab), je reprends:

#synoA docker:

192.168.1.20:/volume1/docker/ /media/synoA_docker nfs defaults,user,auto,noatime,intr,rw 0 0

La 1ère partie indique le répertoire du nas, la seconde le point de montage sur le rpi et la 3ème sont des options de montage.

Il faut répeter ces lignes pour chaque répertoire à monter pour chaque syno (A & B).

Donc si vous avez 4 répertoires à sauvegarder vous aurez ajouté 8 lignes à votre fstab.

Pour finir et fermer ce fichier fstab en enregistrant votre travail, faite « ctrl o » puis « ctrl x« 

Rsync, le script:

Là encore, c’est assez simple. J’ai pris l’habitude de mettre tous mes scripts dans un seul répertoire que j’appel « script » (très original!) et qui se situe dans mon répertoire perso sur le Rpi: /home/pi/script

On crée donc se répertoire:

mkdir /home/pi/script

On se rends donc dans ce répertoire: 

cd /home/pi/script

Puis on va créer le script à l’aide Nano:

nano scriptsynos.sh

La syntaxe de rsync est très simple:

rsync [options] source destination

voilà un modèle pour le réperoire docker, qu’il faudra appliquer à tous les réperoires, bien sûr cela se fait dans un seul et unique script:

#!/bin/bash

rsync -avzh /media/synoA_docker/ /media/synoB_docker

rsync -avzh /media/synoA_documents/ /media/synoB_documents

etc….

Comme tout à l’heure on enregistre avec « ctrl o » puis  » ctrl x« 

Voilà pour le script!

Crontab:

 

Pour automatiser les sauvegardes on passe par Cron.

nano crontab -e

On se rends à la dernière ligne et on va ajouter la fréquence du déclenchement du script. Je ne rentre pas dans l’explication de Cron, vous trouverez facilement. Sachez que si je souhaite faire une sauvegarde tous les jours à minuit ça donnera cela:

00 00 * * * /home/pi/script/scriptsyno.sh

et on enregistre comme précédemment…

Le tour est joué!