Avant de commencer, un petit rappel pour passer le Rpi en français : http://www.tropfacile.net/doku.php/raspberry-pi/comment-passer-votre-raspberry-en-francais

Monter un disque dur externe sur le raspberry pi automatiquement au démarrage

Le but de cette section est de monter un disque dur externe dans le système de fichier du raspberry pi. Il faut bien évidement avoir préalablement raccordé le disque dur sur un port usb du raspberry pi.

Nous allons commencer par créer un répertoire où monter le disque, je trouve l'emplacement /mnt/usb-hdd judicieux :

pi@raspberrypi ~ $ sudo mkdir /mnt/usb-hdd

Nous allons ensuite lister les disques pour repérer le disque à monter :

pi@raspberrypi ~ $ sudo fdisk -l

Disk /dev/mmcblk0: 4027 MB, 4027580416 bytes
4 heads, 16 sectors/track, 122912 cylinders, total 7866368 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000c7b31

        Device Boot      Start         End      Blocks   Id  System
/dev/mmcblk0p1            8192      122879       57344    c  W95 FAT32 (LBA)
/dev/mmcblk0p2          122880     7866367     3871744   83  Linux

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8d399bc0

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63   976751999   488375968+   7  HPFS/NTFS/exFAT

Mon disque dur étant celui de 500 Go, c'est donc le /dev/sda qui m'intéresse.

Vous pouvez connaître le format de partition du disque avec la commande parted. De mon côté le formatage est fait en ext4 sur la partition 1.

pi@raspberrypi ~ $ sudo parted /dev/sda print
Model: WD 5000AAK External (scsi)
Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End    Size   Type     File system  Flags
 1      32,3kB  500GB  500GB  primary  ext4

Nous allons ensuite monter la partition 1 du disque dur externe (/dev/sda1) sur le répertoire précédemment créé (/mnt/usb-hdd/) :

pi@raspberrypi ~ $ sudo mount -t ext4 /dev/sda1 /mnt/usb-hdd/

Pour monter automatiquement le disque au démarrage, il nous faut éditer le fichier /etc/fstab :

pi@raspberrypi /mnt $ sudo nano /etc/fstab

Il faut rajouter la ligne suivante dans le fichier, puis enregistrer les modifications :

/dev/sda1       /mnt/usb-hdd    ext4    defaults           0       0

Redémarrez votre raspberry pi, le disque usb devrait être monté automatiquement et vous devriez pouvoir lister son contenu.

Ajouter un utilisateur sur le raspberry pi

Nous allons ajouter l'utilisateur 'synchro_usr' qui va nous permettre d'effectuer les sauvegardes. Il est mieux d'éviter au maximum les connexions en root. Pour ce faire, il suffit d'ajouter un utilisateur avec la commande adduser et de se laisser guider :

pi@raspberrypi /home $ sudo adduser synchro_usr
Ajout de l'utilisateur « synchro_usr » ...
Ajout du nouveau groupe « synchro_usr » (1002) ...
Ajout du nouvel utilisateur « synchro_usr » (1001) avec le groupe « synchro_usr » ...
Création du répertoire personnel « /home/synchro_usr »...
Copie des fichiers depuis « /etc/skel »...
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès
Modification des informations relatives à l'utilisateur synchro_usr
Entrez la nouvelle valeur ou « Entrée » pour conserver la valeur proposée
        Nom complet []: synchro_usr
        N° de bureau []:
        Téléphone professionnel []:
        Téléphone personnel []:
        Autre []:
Cette information est-elle correcte ? [O/n]O

Ajout du groupe

sudo groupadd synchro_usr
sudo gpasswd -a synchro_usr synchro_usr

Modification des droits du répertoire /mnt/usb-hdd

pi@raspberrypi:/mnt/usb-hdd $ sudo chown -R synchro_usr:synchro_usr /mnt/usb-hdd
pi@raspberrypi:/mnt/usb-hdd $ sudo chmod -R 775 /mnt/usb-hdd

La création de l'utilisateur est terminée, nous allons pouvoir passer à la communication entre le NAS Synology et le rpi.

Mettre en place une connexion ssh par clé entre le NAS et le raspberry pi

Habituellement, lors d'une connexion en SSH à un serveur, un couple nom d'utilisateur/mot de passe nous est demandé. Lors d'un accès automatique il est préférable d'utiliser une connexion par clés. De cette manière aucun mot de passe ne sera demandé, car un échange de clé privée/publique sera effectué entre le NAS et le rpi permettant une connexion tout aussi sécurisée que par mot de passe. Attention à ne jamais dévoiler la clé privée à un tiers ce qui reviendrait à donner le mot de passe.

A l'aide de PuTTY Key Generator (PuTTYgen), générer une paire de clé publique/privée. Le processus est assez simple, il suffit de cliquer sur Generate puis de bouger la souris afin de générer une clé aléatoire, enfin de sauvegarder les clés publiques/privées. La clé publique sera présente sur le serveur (le raspberry pi dans notre cas). La clé privée doit être chez le client (le NAS dans notre cas) afin de prouver son identité au serveur. A noter : il est possible de protéger la clé privée par un mot de passe.

Voici un exemple de clé publique :

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20140502"
AAAAB3NzaC1yc2EAAAABJQAAAQEAwQCm6R2rRB4mVbGg8Rpfma/9kYFhYq3PkW3l
7StiPdJUxTmrxIpFRcekrgT+k9Saq+6w3s9jVoy2nqOQVlRz6ZmimEgWbooitjWf
HK3333bdgsp7ieW/qa3kcI6CXXF8JHZ4X8TS8dtsVcE3J9Iv7mFAEXUgQMs86hpJ
wsXsZ0andf6ch+yEQd7c1VFsENlXsFiGnBwfi8UX6EAqcTdYqb0ydhzwK8XHKCx2
sz+Xwpn15v2LqqVJvVjxL4DRE9rbnQnJk4JI4uxO3b4ik3IbN8o8cgZOamjCnLx9
zFAeabO/+/K8ZdT6QOEO+a7bh1Hezsr2ZCYdrJlCMyN7EN1KoQ==
---- END SSH2 PUBLIC KEY ----

Voici un exemple de clé privée :

PuTTY-User-Key-File-2: ssh-rsa
Encryption: none
Comment: rsa-key-20140502
Public-Lines: 6
AAAAB3NzaC1yc2EAAAABJQAAAQEAwQCm6R2rRB4mVbGg8Rpfma/9kYFhYq3PkW3l
7StiPdJUxTmrxIpFRcekrgT+k9Saq+6w3s9jVoy2nqOQVlRz6ZmimEgWbooitjWf
HK3333bdgsp7ieW/qa3kcI6CXXF8JHZ4X8TS8dtsVcE3J9Iv7mFAEXUgQMs86hpJ
wsXsZ0andf6ch+yEQd7c1VFsENlXsFiGnBwfi8UX6EAqcTdYqb0ydhzwK8XHKCx2
sz+Xwpn15v2LqqVJvVjxL4DRE9rbnQnJk4JI4uxO3b4ik3IbN8o8cgZOamjCnLx9
zFAeabO/+/K8ZdT6QOEO+a7bh1Hezsr2ZCYdrJlCMyN7EN1KoQ==
Private-Lines: 14
AAABAQCXRbNBF0EL4EePRgiFnwyo4+JrIDeSiDrnm1NZBlPrQ/1AotK8o7nBEhlK
H5cZ69Msz9a8eQirnril2iUFZMmNlBenycxkehs03etpgW9AcevjDWe/G9tpUPFR
TRoR41N2hl5Y5mAlWPQL3KDaBZswdbyYD7F+5HvaFJqtarJex0+jTRBPyipN2k2C
dFqFOJRTF2SFOV5cs5Tkes94kuT5qCECBDndUBCwNjqxRAW6TyDu1n70IPJjDooy
muVIe1q1XJQGxOFWHT1L8xmjwofViDqkpLc3O0/BGJ8TNDeK5zsY8+W2j7a/KJHl
AuE/6EsYe9SXUi4QEJPGwApysOutAAAAgQDstIElVyuys/JsbutHDxuHw3MHoB7d
9Py7qawT1ztlH7TzOdx+Sgq7+2+jerKq/GWujRZpy9dtHrKyvz0zl/8VCY5OFFbX
sZBrTt4h0VaFVX7KgnQ1GNNrerhMuxw9x/vJVJu15nvRkG00HfopKZmagjRhlHaY
CnwmWAZ6Z2SqgQAAAIEA0LwszE9dx7fV6jK3Ne3Wumhmi/m8462/7bn3ZixJXKPH
zoBMtUvHpm8518kke4kNHVVRDSLqcmbjJC+y9IlQDDlU0EplNzY/aTbNJqqNUoJo
q4dwfwJJqsG4o+cLvRPOvOibbqgUjvpak3m52ZlslQoKPvQjXITKKlkfKEwbUCEA
AACADmGspFN/f7/lv2x4LcceZdrhiXOerrwqjwLoBWpa9PxZKfUst/YhNkpHhlV+
jFtWOG8JB8PmyaAfU88VDrYqBPA5z685Onxx2evSc7lspKdcL2qhIXpM9o0Xw5DF
ZZA9OmDUHyfjowe30YGb7YDS1u4SqaEdLgHGwnZtKkNKPDE=
Private-MAC: e8821304f365fc078be00f60f2cc186b1809f3ac

Il nous faut maintenant renseigner la clé publique sur le raspberry pi (rôle de serveur). Il faut créer un répertoire ".ssh" dans le répertoire utilisateur, en se reconnectant au ssh avec la session synchro_usr :

synchro_usr@raspberrypi /home/synchro_usr $ mkdir .ssh

Rendons nous dans le répertoire .ssh :

synchro_usr@raspberrypi /home/synchro_usr $ cd .ssh

Il faut ensuite copier la clé publique dans le fichier authorized_keys (remplacez par votre propre clef, ceci n'est qu'un exemple) :

echo "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAwQCm6R2rRB4mVbGg8Rpfma/9kYFhYq3PkW3l7StiPdJUxTmrxIpFRcekrgT+k9Saq+6w3s9jVoy2nqOQVlRz6ZmimEgWbooitjWfHK3333bdgsp7ieWqa3kcI6CXXF8JHZ4X8TS8dtsVcE3J9Iv7mFAEXUgQMs86hpJwsXsZ0andf6ch+yEQd7c1VFsENlXsFiGnBwfi8UX6EAqcTdYqb0ydhzwK8XHKCx2sz+Xwpn15v2LqqVJvVjxL4DRE9rbnQnJk4JI4uxO3b4ik3IbN8o8cgZOamjCnLx9zFAeabO/+/K8ZdT6QOEO+a7bh1Hezsr2ZCYdrJlCMyN7EN1KoQ==" >> authorized_keys

Attention, il faut une clef par ligne, au besoin enlever les retours à la ligne, enlever les lignes de commentaire, et rajouter "ssh-rsa " en début de ligne.

Vous pouvez maintenant essayer de vous connecter via PuTTY en donnant la clé privée (le fichier .ppk généré par PuTTY comme clef privée) dans Connexion >> SSH >> Auth >> Private key file for Authentification ; et le nom d'utilisateur "synchro_usr" dans Connexion >> Data >> Auto-login username.

Nous allons maintenant renseigner au client (le NAS), la clef privée afin de s'identifier auprès du serveur.

Exporter la clé privée de Putty dans le menu Conversions >> Export OpenSSH Key, puis l'enregistrer. Voici un exemple de fichier :

-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAwQCm6R2rRB4mVbGg8Rpfma/9kYFhYq3PkW3l7StiPdJUxTmr
xIpFRcekrgT+k9Saq+6w3s9jVoy2nqOQVlRz6ZmimEgWbooitjWfHK3333bdgsp7
ieW/qa3kcI6CXXF8JHZ4X8TS8dtsVcE3J9Iv7mFAEXUgQMs86hpJwsXsZ0andf6c
h+yEQd7c1VFsENlXsFiGnBwfi8UX6EAqcTdYqb0ydhzwK8XHKCx2sz+Xwpn15v2L
qqVJvVjxL4DRE9rbnQnJk4JI4uxO3b4ik3IbN8o8cgZOamjCnLx9zFAeabO/+/K8
ZdT6QOEO+a7bh1Hezsr2ZCYdrJlCMyN7EN1KoQIBJQKCAQEAl0WzQRdBC+BHj0YI
hZ8MqOPiayA3kog655tTWQZT60P9QKLSvKO5wRIZSh+XGevTLM/WvHkIq564pdol
BWTJjZQXp8nMZHobNN3raYFvQHHr4w1nvxvbaVDxUU0aEeNTdoZeWOZgJVj0C9yg
2gWbMHW8mA+xfuR72hSarWqyXsdPo00QT8oqTdpNgnRahTiUUxdkhTleXLOU5HrP
eJLk+aghAgQ53VAQsDY6sUQFuk8g7tZ+9CDyYw6KMprlSHtatVyUBsThVh09S/MZ
o8KH1Yg6pKS3NztPwRifEzQ3iuc7GPPlto+2vyiR5QLhP+hLGHvUl1IuEBCTxsAK
crDrrQKBgQDstIElVyuys/JsbutHDxuHw3MHoB7d9Py7qawT1ztlH7TzOdx+Sgq7
+2+jerKq/GWujRZpy9dtHrKyvz0zl/8VCY5OFFbXsZBrTt4h0VaFVX7KgnQ1GNNr
erhMuxw9x/vJVJu15nvRkG00HfopKZmagjRhlHaYCnwmWAZ6Z2SqgQKBgQDQvCzM
T13Ht9XqMrc17da6aGaL+bzjrb/tufdmLElco8fOgEy1S8embznXySR7iQ0dVVEN
IupyZuMkL7L0iVAMOVTQSmU3Nj9pNs0mqo1Sgmirh3B/Akmqwbij5wu9E8686Jtu
qBSO+lqTebnZmWyVCgo+9CNchMoqWR8oTBtQIQKBgQDMt8mjwQMyxSSwzqH4RGrW
SCwiRUsg0+F/tVaNszpJnuGvw1bpw37nxLOUTnEClRmruEq8XUSxZqhjPZy2//80
yf6It6UNkqZqpRMkKquxlgzK0bCcn9lxtj6HjRGBil04gIarKDO8KeHn4pMqhNff
kzQ4t8CDfrCP3W1i8aMrrQKBgQCd9i+9NSRfyWOceWgNIrBVtsokvP2lYORFMskP
DMHlPav2N5P+0ZAq7GMf1nx5KXG1VVIXx2VPp858P8WyIrkeAd9RhGhFdSkRWedb
h/w+cIaPpMPVvIrGaRYbK2LURldC2Yphk/Ph0ja0ytHVGiioI0YGIIl2clPNBSxV
2Lq5LQKBgA5hrKRTf3+/5b9seC3HHmXa4Ylznq68Ko8C6AVqWvT8WSn1LLf2ITZK
R4ZVfoxbVjhvCQfD5smgH1PPFQ62KgTwOc+vOTp8cdnr0nO5bKSnXC9qoSF6TPaN
F8OQxWWQPTpg1B8n46MHt9GBm+2A0tbuEqmhHS4BxsJ2bSpDSjwx
-----END RSA PRIVATE KEY-----

Sur le client (le NAS), éditer (ou créer) le fichier "id_rsa" dans le répertoire .ssh du home directory (de l'utilisateur root, seul celui-ci étant autorisé à se connecter en ssh sur les NAS Synology de base).

Mon-NAS> vi ~/.ssh/id_rsa

Coller dans ce fichier la clé privée. Enregistrer et fermer le fichier (touche "i" pour passer en mode insertion, Echap pour repasser en mode commande, toutes "ZZ" pour enregistrer et fermer le fichier).

Par sécurité il est nécessaire de limiter les droits sur le fichier id_rsa au propriétaire (root) :

Mon-NAS> chmod 600 id_rsa

La connexion au serveur doit maintenant se faire de manière automatique, vous pouvez essayer avec la commande suivante :

Mon-NAS> ssh -p 22 synchro_usr@mon-serveur-raspberry-pi.org
Linux raspberrypi 3.6.11+ #456 PREEMPT Mon May 20 17:42:15 BST 2013 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Fri May  2 22:31:38 2014 from 66.246.127.39
synchro_usr@raspberrypi ~ $ logout
Connection to mon-serveur-raspberry-pi.org closed.
Mon-NAS>

Nous avons maintenant mis en place la communication ssh par clé entre le disque dur réseau et le raspberry pi. Nous allons maintenant passer à la mise en place de la synchronisation de fichiers.

Mettre en place de la synchroniration entre le NAS et le raspberry pi

C'est la commande "rsync" qui va nous permettre de synchroniser 2 répertoires. Pour tester tout ça, nous allons créer un répertoire sur le NAS nommé "test_rsync" dans le dossier partagé "document", et nous allons y créer notre premier fichier à synchroniser :

Mon-NAS> mkdir /document/encrypte/test_rsync
Mon-NAS> cd /document/encrypte/test_rsync/
Mon-NAS> echo "Ceci est un test" >> mon_premier_fichier_synchronise.txt
Mon-NAS> ls
mon_premier_fichier_synchronise.txt
Mon-NAS>

Sur le raspberry pi, nous allons créer un répertoire "test_sauvegarde" destiné à recevoir la sauvegarde, on transfère les droits à l'utilisateur synchro_usr :

pi@raspberrypi /mnt/usb-hdd$ sudo mkdir test_sauvegarde
pi@raspberrypi /mnt/usb-hdd$ sudo chown synchro_usr test_sauvegarde/

Retournons sur le NAS, nous allons tester une synchronisation basique (numéro de port : 22, à modifier si besoin) :

Mon-NAS> rsync -e "ssh -l synchro_usr -p 22" -azh --progress /volume1/encrypte/
test_rsync synchro_usr@mon-serveur-raspberry-pi.org:/mnt/usb-hdd/test_sauvegarde
sending incremental file list
test_rsync/
test_rsync/mon_premier_fichier_synchronise.txt
          17 100%    0.00kB/s    0:00:00 (total: 100%) (xfer#1, to-check=0/2)

sent 166 bytes  received 35 bytes  44.67 bytes/sec
total size is 17  speedup is 0.08
Mon-NAS>

Sur le raspberry pi, voyons si le fichier a bien été transféré :

pi@raspberrypi /mnt/usb-hdd$ ls
lost+found  test_sauvegarde
pi@raspberrypi /mnt/usb-hdd$ cd test_sauvegarde/
pi@raspberrypi /mnt/usb-hdd/test_sauvegarde$ ls
test_rsync
pi@raspberrypi /mnt/usb-hdd/test_sauvegarde$ cd test_rsync/
pi@raspberrypi /mnt/usb-hdd/test_sauvegarde/test_rsync$ ls
mon_premier_fichier_synchronise.txt
pi@raspberrypi /mnt/usb-hdd/test_sauvegarde/test_rsync$ cat mon_premier_fichier_synchronise.txt
Ceci est un test
pi@raspberrypi /mnt/usb-hdd/test_sauvegarde/test_rsync$

Et voilà, vous venez de synchroniser votre premier fichier, du NAS vers le Raspberry pi !

Pour aller plus loin : envoi d'un mail lors des sauvegardes

Cette partie est optionnelle. J'explique comment mettre en place nail, le programme permettant l'envoi d'un mail lorsque l'on effectue la synchronisation.

La première étape consiste à installer ipkg, un gestionnaire de paquets dans le même style que apt-get. Sur la page http://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc, téléchargez le fichier xsh. Dans mon cas c'est le fichier syno-mvkw-bootstrap_1.2-7_arm.xsh dont j'ai besoin (DS212j). Exécuter le script, une fois mis sur le NAS :

sh syno-mvkw-bootstrap_1.2-7_arm.xsh

Editer le fichier /root/.profile et commenter les lignes PATH et export avec un # :

vi /root/.profile
#PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/
#export PATH

Puis on reboote :

Mon-NAS> reboot

On met ensuite à jour a liste des paquets :

Mon-NAS> ipkg update
Mon-NAS> ipkg upgrade

Si ipkg est introuvé, c'est que /opt/bin:/opt/sbin n'est peut-être pas dans le PATH, alors on l'ajoute :

export PATH=$PATH:/opt/bin:/opt/sbin

L'installation de nail se fait comme si on était sur apt-get :

Mon-NAS> ipkg install nail

La configuration de nail se fait dans le fichier /opt/etc/nail.rc :

Mon-NAS> vi /opt/etc/nail.rc

Simplement éditer les champs en fonction de votre fournisseur mail :

set smtp=smtp.provider.com:port set smtp-use-starttls set smtp-auth-user=myemail@provider.com set ssl-verify=ignore set smtp-auth-password=mypassword

Exemple d'utilisation de nail pour envoyer un mail à chaque fois que quelqu'un se connecte en ligne de commande : http://forum.synology.com/wiki/index.php/How_to_get_the_NAS_to_email_you_everytime_someone_logs_into_the_CLI

Script de sauvegardes automatiques

Voici le script que j'utilise pour sauvegarder toutes les semaines mon répertoire à synchroniser, à adapter suivant les besoins :

#!/bin/sh

##############################
# SCRIPT DE SAUVEGARDE RSYNC #
##############################
# SAUVEGARDE  des PHOTOS     #

# Répertoire source :
SOURCE_DIR="/volume1/photo"

# Répertoire cible :
BACKUP_DIR="/mnt/usb-hdd/rsync/photo"

# Adresse du serveur cible
BACKUP_ADDR=mon-serveur-raspberry-pi.org

# Port sur le serveur cible
BACKUP_PORT=22

# Utilisateur sur le serveur cible
BACKUP_USR=synchro_usr

# Fichier de log :
LOG_FILE="/volume1/homes/admin/synchro/rapport_sync_photos.txt"

# Bande passante maximale (ko/s)
BW_LIMIT=0

# Format de la date
DATE=`date +%d_%m_%Y__%H_%M`

# Répertoire des données
SYNC_DIR="sync_data"

# Répertoire ds incréments
INC_DIR="increments"

# Temps de rétention des incréments avant suppression automatique, en jour
INC_KEEP_TIME=365

# Adresse mail où envoyer le rapport
MAIL=your_email@your_provider.com

# Adresse mail depuis laquelle le rapport sera envoyé
MAIL_SENDER=your_email@your_provider.com

###################
# DEBUT DU SCRIPT #

# Passage en UTF8 pour nail
export LC_ALL=fr_FR.utf8

# Suppression du rapport précédent
rm ${LOG_FILE} -f

echo -e "== Rapport de synchronisation des photos ==\n" >> ${LOG_FILE}

# Synchronisation des fichiers, avec sauvegarde des incréments
echo -e "\nSynchronisation des photos :" >> ${LOG_FILE}
rsync -e "ssh -l rsync -p ${BACKUP_PORT}" --timeout 300 -azh --bwlimit=${BW_LIMIT} --backup --backup-dir ${BACKUP_DIR}/${INC_DIR}/${SYNC_DIR}_$DATE --log-file ${LOG_FILE} --progress  --delete-after --delete-excluded --exclude '#recycle' --exclude 'Thumbs.db' --exclude '@eaDir' ${SOURCE_DIR} ${BACKUP_USR}@${BACKUP_ADDR}:${BACKUP_DIR}/${SYNC_DIR}
res_rsync=$?	# rsync : 0 = OK
if [ ${res_rsync} -eq 0 ]
then
	res_txt_rsync="OK"
else
	res_txt_rsync="KO (retour : ${res_rsync})"
fi
	echo "Résultat synchronisation : ${res_txt_rsync}" >> ${LOG_FILE}

#  Suppression des incréments les plus anciens
echo -e "\nSuppression des photos increments de plus de ${INC_KEEP_TIME} jours :" >> ${LOG_FILE}
ssh -p ${BACKUP_PORT} ${BACKUP_USR}@${BACKUP_ADDR} "find ${BACKUP_DIR}/${INC_DIR}/* -maxdepth 1 -type d -mtime +${INC_KEEP_TIME} -exec rm -rfv {} \\;" >> ${LOG_FILE} 2>&1
res_rm_old=$?	# ssh : renvoie code de retour de la commande ; find : renvoie 0 si OK
if [ ${res_rm_old} -eq 0 ]
then
	res_txt_rm_old="OK"
else
	res_txt_rm_old="KO (retour : ${res_rm_old})"
fi
echo "Suppression des incréments anciens : ${res_txt_rm_old}" >> ${LOG_FILE}

# Affichage de la taille restante sur le disque de sauvegarde
echo -e "\nDemande du taux d'utilisation du disque de sauvegarde..." >> ${LOG_FILE}
ssh -p ${BACKUP_PORT} ${BACKUP_USR}@${BACKUP_ADDR} "df -h" >> ${LOG_FILE} 2>&1

echo -e "\nEnvoi du mail de notification..." >> ${LOG_FILE}
echo -e "Cher utilisateur,\n\nVoici ci-joint le rapport de synchronisation des photos.\nSauvegarde du répertoire ${SOURCE_DIR} vers ${BACKUP_ADDR}:${BACKUP_DIR}/${SYNC_DIR}.\n\n- Synchronisation : ${res_txt_rsync}\n- Suppression historique : ${res_txt_rm_old}\n\nSincères salutations,\nSynology DiskStation" | /opt/bin/nail -s "Rapport synchronisation photos" -r "Mon-NAS - Synology DiskStation <${MAIL_SENDER}>" -a ${LOG_FILE} ${MAIL}
res_email=$?
if [ ${res_email} -eq 0 ]
then
	res_txt_email="OK"
else
	res_txt_email="KO (retour : ${res_email})"
fi
echo "Envoi du mail : ${res_txt_email}" >> ${LOG_FILE}

# Notification sur le DSM
if [ ${res_rsync} -eq 0 ] && [ ${res_rm_old} -eq 0 ] && [ ${res_email} -eq 0 ]
then
	synodsmnotify @administrators "Succès synchronisation photos" "La sauvegarde des photos vers ${BACKUP_ADDR} s'est déroulée avec succès."
	exit 0
else
	synodsmnotify @administrators "Échec synchronisation photos !" "La sauvegarde des photos sur ${BACKUP_ADDR} a échouée !
Synchronisation : ${res_txt_rsync},
Suppression historique : ${res_txt_rm_old},
Envoi mail : ${res_txt_email}." exit 1 fi

Le script est suffisament commenté pour ne pas en rajouter en explications. Comme vous pouvez le voir, il y a même un petit bonus permettant d'afficher une notification dans l'interface web de synology pour afficher le statut de la synchronisation.

Vous pouvez copier ce script dans le répertoire désiré, et l'exécuter, en ayant au préalable mis les droits en exécution ;-).

Planification de l'exécution du script

Deux solutions possibles, tout d'abord, ajouter une entrée dans le cronjob :

Mon-NAS> vi /etc/crontab

Vous trouverez des exemple de syntaxe sur le web, par exemple :

50      22      *       *       *       root    /volume1/homes/admin/synchro/script.sh

Puis il faut redémarrer le service :

Mon-NAS> /usr/syno/sbin/synoservicectl --restart crond
crond restarted.

Si script fonctionne en manuel mais pas en cron, vous pouvez essayer de rajouter export LANG=en_US.utf8 comme il a été fait dans le script. Plus d'infos à cette adresse : http://www.logikdev.com/2010/02/02/locale-settings-for-your-cron-job/

Pour exécuter le script régulièrement, vous pouvez aussi passer directement par l'interface Synology. Aller dans le panneau de configuration > Planificateur de tâches. Puis Créer > Script défini par l'utilisateur. Donnez un nom à la tâche, l'utilisateur root, exécutez la tâche dans l'onglet Programmation, puis entrez l'adresse du script à exécuter, par exemple, si vous voulez garder la trace d'exécution du script :

/volume1/homes/admin/synchro/script.sh  >/volume1/homes/admin/synchro/exec_trace_sync_photos.txt 2>&1

Pour aller plus loin en cryptant ses données sur le raspberry pi : http://www.generation-linux.fr/index.php?post/2013/04/29/Sauvegardes-distantes-chiffr%C3%A9es-avec-un-Raspberry-Pi%2C-Truecrypt-et-Rsync