Synchroniser sa Seedbox vers son NAS Synology avec Rsync

Vous allez découvrir dans ce tutoriel comment synchroniser automatiquement les fichiers Torrent téléchargés par votre Seedbox vers votre NAS Synology. Ainsi plus besoin de Filezilla ou WinSCP pour récupérer vos fichiers ils sont directement accessibles avec vos applications Synology habituelles, les bien nommées DS File, DS Audio, DS Photo, ou DS Vidéo. Ainsi même loin de chez vous, depuis votre smartphone vous pouvez lancer un téléchargement de Torrent depuis l’interface Web du client Torrent de votre Seedbox, et quelques minutes après lancer l’application DS File pour accéder au fichier fraîchement téléchargé. Cool non ?

Ce tutoriel aurait aussi pu s’appeler d’une manière plus générale “Comment synchroniser automatiquement un répertoire entre deux serveurs Linux” ou encore d’une manière plus explicite “Comment copier automatiquement les fichiers Torrents téléchargés avec une Seedbox avec un NAS Synology”, tant les principes peuvent s’appliquer à d’autres usages.

Sommaire

Ce tutoriel nécessite d’être un minimum structuré, car bien que cela ne soit pas (si) compliqué, dès que l’on touche à Linux le temps passe vite …

Dans ce tutoriel nous allons réaliser les actions suivantes:

  1. Autoriser votre NAS Synology à accepter les connexions SSH par clé publique / privé. En effet le but est de synchroniser automatiquement le répertoire de votre Seedbox vers votre NAS, il faudra donc le faire sans taper de mot de passe et sans sacrifier la sécurité de votre NAS en laissant le mot de passe en clair dans un script par exemple. Donc rien ne vaut une bonne paire de clé Publique / Privé pour sécuriser la connexion et l’authentification.
  2. Activer Rsync sur votre NAS Synology. Rsync c’est l’outil de transfert de fichiers par excellence sous Linux. Un peu l’équivalent de Robocopy sous Windows. Bonne nouvelle, Rsync est déjà implémenté sur Synology, et oui Synology est un système Linux à part entière. Il suffit juste de l’activer dans l’interface d’administration.
  3. Activer Rsync sur votre Seedbox. De la même manière Rsync doit déjà être déployé sur votre Seedbox mais au cas où, selon votre distribution, je vous montre comment l’installer et l’activer.
  4. Lancer un script de synchronisation automatique.
Synchroniser sa Seedbox vers son NAS Synology avec Rsync

Environnement utilisé pour le tutoriel

Oui il est important de vous décrire l’environnement qui a permis de monter ce tutoriel afin que vous puissiez l’adapter au cas où le votre diffère. Je tiens à préciser que cet article, comme la plupart de mes articles, sera actualisé le plus régulièrement possible.

  • Un NAS Synology
  • Une Seedbox installée sur un VPS. Il s’agit d’un VPS 1&1 installé sous Debian sur lequel j’ai installé un client Torrent simple et efficace, à savoir Deluge.
  • Tout a été réalisé depuis ma station de travail DELL sous Windows 11 confortablement installé dans mon canapé.
  • PuTTY pour faire de la ligne de commande sur ma Seedbox ET mon Synology
  • WinSCP pour avoir une vue graphique des systèmes de fichiers sous Linux car je ne suis pas un pro de Linux et du coup je me permet d’éditer mes fichiers de conf Linux depuis mon Windows via WinSCP plutôt qu’avec VI en ligne de commande depuis PuTTY. Les puristes vont hurler mais je privilégie le gain de temps
  • Le navigateur Chrome pour accéder à l’interface admin de mon NAS Synology.

Préparatifs

  1. Ouvrez une console PuTTY sur votre Seedbox et enregistrez les paramètres pour gagner du temps ensuite.
  2. Ouvrez une session WinSCP sur votre Seedbox et enregistrez ….. bla bla bla
  3. Lancez l’interface admin de votre NAS Synology dans votre navigateur … aux côtés de mon tutoriel.

Mettre en place l’authentification SSH par clé publique/privée sur le Synology

1- Activer la console SSH sur le NAS Synology

Activez le SSH depuis l’interface administration du Synology en vous rendant dans le Panneau de configuration > Terminal & SNMP

Activez le service Accueil utilisateur via le Panneau de configuration > Utilisateur > Avancé.Il est normalement déjà activé et c’est ce qui permet d’avoir un répertoire Home sur votre NAS. Le répertoire Home sera utilisé pour stocker la clé SSL qui autorisera votre Seedbox à se connecter à votre Synology.

2- Permettre l’authentification par Clé SSL sur le NAS Synology

Maintenant que l’accès SSH est activé sur le NAS nous allons pouvoir y activer l’authentification par clé Publique / Privée.

Connectez vous à votre Synology en SSH depuis la console PuTTY de votre Seedbox, c’est l’occasion de vérifier que la connexion SSH vers NAS fonctionne depuis votre Seedbox.

Connectez vous avec le compte Admin obligatoirement, si vous aviez désactivé le compte Admin par défaut de votre Synology il faut donc temporairement le réactiver.

ssh admin@ip_synology

Remplacez ip_synology par l’adresse IP de votre NAS Synology

Octroyez vous les droits avancés du compte root via la commande suivante :

sudo -i

Editer le fichier /etc/ssh/sshd_config avec l’éditeur VI via la commande suivante :

vi /etc/ssh/sshd_config

Utiliser VI ne s’improvise pas, c’est un pur éditeur en mode console. Si vous n’êtes pas à l’aise je vous renvoie vers un tutoriel simple de VI.

Retirer le # sur les trois lignes suivantes afin qu’elles ne soient plus en commentaire et sortez de VI en tapant :wq (et oui ça ne s’invente pas …) :

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Pour vous rassurer, c’est la seule l’opération réellement “intrusive” que vous allez faire sur votre Synology, le reste sera plus basique. Nous venons simplement d’autoriser le Synology à accepter des connexions via des clés SSL. Enregistrez vos modifications et sortez de VI en pressant successivement les 3 touches :wq (: pour rentrer une commande, w comme Write, q comme Quit)

Sortez de la session root du Synology via la commande Exit.

root@NAS:~$ Exit

Vous obtenez le résultat suivant :

logout
admin@NAS:~$

Sortez maintenant de la session Admin du Synology, en tapant une nouvelle fois la commande Exit.

admin@NAS:~$ Exit

Ce qui vous ramènera à la session root de votre Seedbox.

logout
Connection to 82.xxx.xxx.xx closed.
root@vps35xxxx:~#

3- Générer les clés SSL sur la Seedbox et transférer la clé publique sur le NAS

Nous allons générer une paire de clé SSL sur la Seedbox et la transférer sur le NAS Synology. Une fois en possession de cette clé le NAS sera en mesure d’accepter les connexions en provenance de la Seedbox sans authentification. Nous établissons en quelque sorte une relation de confiance unidirectionnelle entre les 2 systèmes. Il faudrait faire l’opération dans l’autre sens pour que le Synology se connecter sans mot de passe à la Seedbox. Vous pigez le principe?

Depuis la session root de votre Seedbox générez les clés SSL de votre Seedbox grâce à la commande ssh-keygen suivante :

ssh-keygen -t rsa

Pressez 3 fois la touche Entrée pour générer la paire de clé. Si une paire de clé a déjà été créé sur votre serveur pour un autre usage le prompt vous propose de l’écraser. Bien sur si la paire de clé existante est déjà utilisée, annulez l’opération et passez à l’étape suivante pour utiliser la paire existante.

Copiez la clé SSL sur votre NAS Synology avec la commande suivante ou IP_Synology correspond à l’adresse de votre serveur Synology. C’est la dernière fois que vous aurez besoin de vous authentifier car après tout se fera via les clés 😉

ssh-copy-id admin@IP_Synology

Vous pouvez constater dans le partage /homes/admin/ contient un répertoire .ssh qui contient votre la clé SSL de votre Seedbox. Vous pouvez même éditer le fichier authorized_keys en question.

La clé SSL de votre Seedbox est bien copiée sur le NAS

4- Tester l’authentification le fonctionnement de l’authentification SSL

Depuis la console SSH de votre Seedbox connectez vous à votre NAS, comme au début du tutoriel.

ssh admin@ip_synology

Remplacez ip_synology par l’adresse IP de votre NAS Synology. Vous devez désormais être connecté sans avoir eu besoin de rentrer votre mot de passe.

Si jamais ça ne fonctionne pas et que votre mot de passe est demandé, connectez vous et passez les commandes suivantes afin de changer les droits sur le répertoire contenant les clés sur le NAS Synology.

chmod 755 /volume1/homes/admin
chmod 700 /volume1/homes/admin/.ssh
chmod 644 /volume1/homes/admin/.ssh/authorized_keys

Cette fois ça marche ? 😉 Nous pouvons passer à la suite, activer Rsync sur le Synology et sur la Seedbox pur enfin pouvoir planifier l’exécution d’un script de copie de fichiers Torrent entre votre Seedbox et votre NAS.

Vous pouvez désormais désactiver l’accès à la console SSH sur votre Synology dans Panneau de configuration > Terminal & SNMP. En effet désormais c’est Rsync qui va communiquer avec votre Synology via la clé SSL. 

Activer le service Rsync son votre Synology

Rendez vous sur votre console d’administration du Synology, dans le Panneau de configuration > Services de fichiers > rsync. Cochez la case Activer le service rsync.

Activation du service Rsync sur le Synology

Un partage NetBackup doit apparaître dans les dossiers partagés, vous ne serez pas obligé d’utiliser ce répertoire pour copier les Torrents depuis votre Seedbox, mais puisque ce répertoire est créé et que l’on ne peut pas le supprimer sans désactiver le service Rsync (ne me demandez pas pourquoi …), j’ai personnellement pris le parti de l’utiliser pour mes transferts.

Activer Rsync sur le Synology créé un partage par défaut … pourquoi pas

Activer Rsync son votre Seedbox

Connectez à votre Seedbox en PuTTY et installez Rsync l’aide de la commande suivante.

sudo apt-install rsync

Il n’y a rien à faire de plus côté Seedbox. On passe à la dernière étape !

Mettre en place le script Rsync pour transférer vos fichiers

1- Création du script de copie et test de fonctionnement

Je vous propose de mettre en place une solution de transfert toute simple. Nous allons lancer un script qui va se contenter de copier le contenu de votre répertoire de téléchargement de Torrents sur votre Seedbox vers un répertoire de votre NAS Synology. La copie se fera de manière incrémentale bloc, cela signifie qu’un fichier déjà copié ne sera pas recopié à chaque fois et même mieux, si le fichier source est légèrement modifié, seule les différences seront transférées.

Voilà c’est simple mais efficace. Le but est de rapatrier les fichiers et ça marche très bien.

J’ai trouvé beaucoup d’autres scripts sur le net, certains gèrent la suppression du fichier source dès qu’il est copié, pourquoi pas, mais quand on télécharge des Torrents avec des trackers privés comme T411, Elite Trackers et compagnie, vous devez laisser le Torrent en partage pendant quelques jours pour que votre ratio de téléchargement reste correct. Donc je vous recommande plutôt de supprimer vous même vos Torrents de temps en temps.

Copiez / collez le script suivant dans un fichier rsync.sh placé par exemple dans le répertoire /root/scripts de votre Seedbox. Je vous recommande vivement de passer par WinSCP pour faire ça simplement en mode graphique. Sinon depuis PuTTY, faut passer par du VI et autre NANO et c’est vite très pénible. En tout cas je suis tout sauf un expert Linux, je cherche donc la simplicité.

#!/bin/bash
rsync -av --inplace --rsh='ssh -p22' /var/lib/deluge/Downloads/complete/ admin@ip_synology:/volume1/NetBackup

Remplacez ip_synology par l’adresse IP de votre NAS Synology.

WinSCP évite de faire de la ligne de commande pour des trucs simples.

Pensez bien à rendre votre script exécutable sinon ça ne fonctionnera pas :

chmod +x /root/scripts/rsync.sh

Pour tester que le script fonctionne correctement lancez le manuellement via la commande suivante :

bash /root/scripts/rsync.sh

Génial ça fonctionne, la copie des fichiers a démarrée et s’est terminée avec succès !

sending incremental file list
Parenthese.2016.FRENCH.HDRip.XviD-EXTREME.www.torrent9.biz.avi
 717,019,454 100% 2.31MB/s 0:04:56 (xfr#1, to-chk=0/3)

sent 412,309,080 bytes received 187,667 bytes 1,324,227.12 bytes/sec
total size is 743,007,045 speedup is 1.80

2- Exécuter la tâche automatiquement

Votre script fonctionne, c’est une bonne chose, il ne reste plus qu’à l’exécuter automatiquement. Encore une fois plusieurs méthodes sont possibles :

Méthode 1: Soit vous planifiez l’exécution du script directement dans le client Torrent de votre Seedbox : Transmission, Deluge ou rTorrent, pour ne citer que les meilleurs. Avec cette solution il est possible de lancer la commande dès qu’un Torrent a terminé son téléchargement. Voici comment procéder sur Deluge par exemple.

Le module Execute de Deluge permet de lancer des scripts

Un moyen simple de lancer votre tâche de copie dès qu’un Torrent est téléchargé

Méthode 2: Soit vous planifiez une tâche planifiée CRON sur le Linux de votre Seedbox. Du coup vous n’avez pas de dépendances avec le client Torrent et le script s’exécute tous les X temps.

Lancez la planificateur CRON sur votre Seedbox :

 crontab -e

Définissez votre tâche planifiée : minute heure jourdumois mois jourdelasemaine /chemin/du/script.

Dans cet exemple la tâche s’exécute tous les 5 minutes

*/5 * * * * cd /root/scripts && sh rsync.sh

Dans celui ci exemple la tâche s’exécute tous les 5 minutes entre 20 heures et 8 heures du matin

*/5 20-8 * * * cd /root/scripts && sh rsync.sh

Je vous laisse choisir la méthode qui vous convient le plus. Je préfère personnellement la méthode 2 qui d’une part est plus généraliste, et qui d’autre part sera plus efficace en cas de problème réseau ou système, puisque la copie sera relancée périodiquement.

Conclusion

J’ai passé quasiment une journée complète à faire fonctionner la partie SSL sur le Synology car aucun tuto trouvé sur Internet n’abordait le fait qu’il faille modifier un fichier système sur le Synology pour faire fonctionner l’authentification sans mot de passe. A se demander si les tutos sont vraiment testés … Bref je rend à César ce qui appartient à César car j’ai trouvé la solution pour le SSL sur le site Chainsaw on a Tire Swing dans l’article SSH into your Synology DiskStation with SSH Keys que j’ai du découvrir je ne sais pas comment au moment ou j’étais prêt à abandonner.

J’ai refais le tutoriel en repartant de zéro, avec un VPS réinitialisé et un client Deluge tout neuf afin d’être certain que ça fonctionne. Si vous suivez scrupuleusement le tuto ça devrait fonctionner du premier coup. Maintenant n’hésitez pas à me faire un retour si vous rencontrez des difficultés, j’essaierai de vous aider.

22 réflexions au sujet de “Synchroniser sa Seedbox vers son NAS Synology avec Rsync”

  1. Merci beaucoup pour ton tutoriel.

    Une remarque ou demande, je ne sais pas trop dans quel sens la formuler 🙂

    Lorsque tu déplaces ton fichier descendu sur ton NAS dans un autre dossier, rsync relance la synchro. Y a-t-il un moyen d’éviter cela et d’historiser les téléchargements passés ?

    Merci d’avance

    Répondre
  2. Ca marche impeccable.
    J’ai pu mettre en place la synchro de répertoires OSX avec le NAS avec un mécanisme dans lequel j’ai confiance.
    Merci beaucoup !

    Répondre
  3. Bonjour,
    Très bon tuto, mais je bloque au niveau de crontab -e
    J’ai lancé cette commande, il fallait faire un choix, au hasard, j’ai pris le choix 2 mais je ne sais pas comment insérer une ligne de commande dans l’éditeur de crontab.
    Si quelqu’un peut m’aider 😉

    Répondre
  4. Bonjour et grand merci pour ce tuto,

    Je cherchais comment faire la config du Synology.
    Perso, je n’utilise jamais le compte “admin”. Je préfère utiliser un compte perso (c’est plus sécurisant).
    Je suis un linuxien de longue date et je vais maintenant me servir de ce tuto pour sauvegarder automatiquement le contenu de mon téléphone et de ma tablette sous Android. Le script bash contenant l’appel à la commande “rsync” tourneront dans l’application “termux”.
    Un régal !
    Encore merci et bonne continuation

    Répondre
  5. Bonjour et merci beaucoup pour ce tuto et celui de l’install d’une seedbox !
    je rencontre toutefois un petit pb :
    dans mon fichier sshd config, je n’ai pas trouvé la ligne RSAAuthentification. je pense que c’est ça qui fait que si mon accès ssh n’est pas activé dans DSM, rsync n’arrive pas à faire sa synchro alors que depuis la console ssh, je peux lancer ma commande cron ss pb.
    si vous voyez ce que je peux faire je suis preneur car du coup je dois continuer à faire une collecte manuelle des downloads

    Répondre
  6. Bonjour ! 🙂
    De mon côté j’ai un soucis au niveau de la connexion à mon serveur Synology en SSH avec PuttY…

    Impossible pour moi de m’y connecter depuis mon serveur Kimsufi… j’ai le message “Connection timed out” qui apparaît… Pourtant le SSH est bien activé sur le port 22, l’accès admin est bien activé… Je ne vois pas du coup d’ou peut venir le pb…

    Je prend toute aide sur le sujet 🙂

    Répondre
  7. Bonjour,

    Je bloque des les préparatifs (shame on me 🙁 )

    “Ouvrez une console PuTTY sur votre Seedbox et enregistrez les paramètres pour gagner du temps ensuite.
    Ouvrez une session WinSCP sur votre Seedbox et enregistrez ….. bla bla bla”

    Que doit on faire exactement concernant ces deux étapes svp? je ne comprends pas ce qu’il faut “enregistrer”

    Merci par avance
    Bonne journée.

    Répondre
  8. tres bon tuto merci , es ce que il y a possibilité de telecharger que les *.mkv par exemple et exclure le reste?

    Répondre
  9. j’ai debian 8.1 mais je ne peut pas utiliser sudo me réponds no found merci je pense qu’il faut installer sudo mais je ne sais pas comment merci

    Répondre
    • Effectivement sudo n’est pas toujours intégré dans le package, ça dépend des fournisseurs …

      Pour installer et paramétrer sudo :
      apt-get install sudo
      usermod -a -G sudo root

      Sinon tu peux aussi taper la commande “su root” puor t’éviter d’installer sudo

      OC.

      Répondre
  10. Bonjour,

    Je bloque à l’étape où je dois transférer la clé publique sur le NAS :
    ssh-copy-id admin@IP-de-mon-NAS

    Voici le message d’erreur :
    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
    /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
    admin@XX.XXX.XXX.XXX‘s password:
    Permission denied, please try again.

    Je n’arrive pas à me connecter avec le compte admin de l’extérieur, pourtant j’ai bien activé le service rsync sur le Synology DS216+II.

    Pouvez-vous m’aider ?

    Merci d’avance,

    Olivier

    Répondre
  11. Bonjour je tourne en rond depuis une semaine pour essayer de paramétrer mon DS216+II en sftp pour que mon frère puisse y avoir accès à distance, j’ai suivi le début du tuto mais ca ne marche toujours pas, j’ai pourtant bien paramétré mes ports interne et externe en sftp. De plus je n’arrive pas à passer l’étape plus besoin de mot de passe, il me le demande toujours même une fois les clefs crées et les mdossiers modifiés.
    Quelqu’un aurait-il une idée?

    Répondre
    • Bonjour Christophe,

      Refais pas à pas chacune des étapes, sans en oublier une seule et indique moi ou ça bloque, avec message d’erreur éventuel.

      Je fais régulièrement ces manips pour aider des amis et de nombreux retours sur ce tuto semblent attester qu’il n’y a pas de problèmes particuliers.

      OC.

      Répondre
  12. Un tres grand merci pour ce tuto tres clair. Je cherchais un moyen natif depuis un bon moment …

    Répondre
  13. Merci beaucoup pour ce tuto j’ai réussi du 1er coup !
    depuis le temps que je cherchait a récupérer sur mon syno depuis ma seedbox de manière automatique je suis ravi 🙂

    Répondre
  14. Excellent tuto, merci, cela correspond tout à fait à ce que je voulais mettre en place du coup j’ai gagné pas mal de temps 😉

    Répondre
  15. Bonjour,
    Merci pour cet article !

    J’ai un peu modifié le script pour éviter qu’il ne se lance en parallèle. En effet si la synchronisation met plus de 5 minutes, on voit plusieurs instructions rsync tourner ce qui peut faire perturber le processus.

    Ma solution est de créer un fichier de “verrou” qu’on supprime à la fin du traitement ou si le processus est tué

    #!/bin/bash
    LOCKFILE=$HOME/lock.txt
    if [ -e ${LOCKFILE} ] && kill -0 `cat ${LOCKFILE}`; then
    echo “already running”
    exit
    fi

    # make sure the lockfile is removed when we exit and then claim it
    trap “rm -f ${LOCKFILE}; exit” INT TERM EXIT
    echo $$ > ${LOCKFILE}

    #make sure ssh is running
    eval `ssh-agent -s`
    #rsync
    rsync -av –inplace –rsh=’ssh -p22′ /var/lib/deluge/Downloads/complete/ admin@ip_synology:/volume1/NetBackup

    rm -f ${LOCKFILE}

    Répondre
    • Bonsoir et merci pour ta contribution Mathieu.

      Effectivement l’accumulation de processus rsync n’est pas super clean et peut même finir par ralentir le NAS.

      OC.

      Répondre
  16. Salut !
    Super article. Merci.
    J’avais envisagé la même chose pour chez moi, mais ça fait une quantité énorme de fichier a DL ce qui risque vite de faire exploser le NAS 🙂
    Du coup j’ai préféré la méthode manuelle pour les fichiers.
    Après, kodi peut aussi se connecter en FTP sur la seedbox pour streamer les films/séries.
    Ça marche aussi très bien et ça évite de surcharger le NAS.
    L’idéal serait de pouvoir exclure certaines fichiers dans la commande rsync… Genre descendre que les musiques et laisser les films…
    A creuser. Mais merci pour la partie échange de clef avec le syno, je ne m’étais jamais penché sur cette question.
    Bonne continuation

    Répondre

Laisser un commentaire

Cliquez ici pour révoquer votre décision.