• Accueil
  • News
  • Catégories
    • Bande dessinée
    • Cinéma
    • Développement
    • e-Commerce
    • Hacks
    • Jeux vidéo
    • Media Center
    • Mobile
    • Modélisation 3D
    • Modélisme
    • Série TV
    • Serveurs
  • Let’s Play
    • Assassin’s Creed II
    • Assassin’s Creed III
    • Dishonored
    • Sleeping Dogs
  • Contact

Récupérer automatiquement les téléchargements de sa SeedBox


Posted by Arnaud on 29 déc 2011 / 16 Comments



Rsync est un outil très sympathique fourni par défaut dans toutes les distributions linux récentes. Il permet de synchroniser deux dossiers ou deux fichiers l’un par rapport à l’autre et de reprendre les téléchargements très simplement.

L’intérêt d’un tel outils lorsqu’on dispose d’une SeedBox, c’est qu’il va nous permettre de récupérer l’ensemble des téléchargements terminés et de les transférer sur un PC ou bien un NAS directement chez vous sans avoir à le faire manuellement.

Si comme moi, vous en avez marre de devoir utiliser des outils comme Filezilla et devoir laisser tourner votre PC toute la nuit pour récupérer le dernier film de vacances de votre Oncle, c’est la solution révée !

Pré requis

  • Une SeedBox installée (comme ici)
  • Une NAS disposant d’un accès SSH (Pour moi j’utilise un Synology DS-411j)

La plupart des NAS ne dispose pas d’un CPU très performant, j’ai donc voulu concentrer son utilisation sur l’écriture et non la connexion à la SeedBox.

Installer et configurer Rsync

La première chose à faire, c’est vérifier si votre NAS accepte la connexion SSH. Pour le Synology, il suffit de l’activer dans le panneau de configuration.

Connectez vous à votre SeedBox en tant que root.

Créez un utilisateur qui servira à lancer le transfère de manière automatique.

useradd -d /home/batch -m batch
passwd batch

Téléchargez le fichier suivant : batch.zip

su - batch
wget http://www.legeektechno.fr/wp-content/uploads/2011/12/batch1.zip
unzip batch.zip

Cette archive contient 2 fichiers.

Le premier fichier est exclude.txt, il contient la liste des fichiers ou dossiers à exclure de la synchronisation. Le second est le script rsync_v2.sh permettant de lancer la synchronisation entre la SeedBox et le NAS. J’ai réalisé ce petit script moi même (soyez indulgent ^^) pour répondre à mes besoins. Il est tout à fait possible de n’utiliser que les commandes rsync de base.

Editez le fichier rsync_v2.sh et modifier les variables suivantes :

vi rsync_v2.sh
chmod +x rsync_v2.sh
###########################
#   Variables à modifier  #
###########################
#Dossier source
SRC=/dossier/a/telecharger
#Dossier cible
DST=/dossier/de/destination
#Fichier d'exclusion
EXCLUDE_FILE=./exclude.txt
#Utilisation de la bande passante en Ko
BWLIMIT=2048
#Utiliser une connexion ssh distante
USE_SSH=true
#Utiliser la connexion SSH pour la source
USE_SSH_SRC=false
#Si utilisation de SSH, définir la chaine de connexion
SERVER_SSH=root@monippublique
#Repertoire contenant les logs
LOG_BASE_DIR=./logs
#Durée de concervation des logs
OLD_DAYS=7

Attention, le chemin de destination correspond au chemin absolu du dossier du NAS. Personnellement, la valeur correpsond au chemin /volume1/Media/Synchro. Le chemin source correspond au chemin contenant vos téléchargements de torrent (/home/downloader si vous avez suivi mon tuto d’installation de SeedBox) sur votre SeedBox.

Maintenant que le script est configuré, il ne reste plus qu’à configurer la tache permettant de lancer ce script à heure régulière:

crontab -e

Ajouter la ligne suivante :

0 * * * * /home/batch/rsync_v2.sh

Ajuster les réglages en fonction de ce que vous voulez. Ici la synchronisation se lancera toutes les heures. Pas d’inquiétudes à avoir si une synchronisation dure plusieurs heures, une seule instance du script peut tourner au même moment.

Quand le script se lancera, une arborescence sera alors créée dans le dossier $LOG_BASE_DIR.

Un fichier progress.log contiendra la progression de la synchronisation. Un dossier resumes contiendra un dossier par jour de synchronisation. Dans chaque dossier de jour, un fichier de résumé par heure. Une rotation de log permet de supprimer les dossiers plus vieux de 7 jours (ou plus suivant les réglages).

A ce niveau là, si la synchronisation est lancée, la connexion ne sera possible que si un utilisateur entre le mot de passe de connexion du compte root du NAS. Pour permettre la connexion automatique, une petite astuce très simple ! Il faut utiliser un système de clé publique/privée pour la connexion ssh.

Attention, le fait d’installer la clé de votre SeedBox sur votre NAS vous expose à des risques de sécurités. En effet, si un intrus arrive à se connecter sur votre SeedBox, il pourra alors se connecter directement chez vous. Si vous pensez qu’il y a un risque, alors il est possible d’installer le script et de faire cette configuration directement sur le NAS (via quelques modifications bien sur). J’ai testé cette autre configuration avec succès. Mais si comme moi, vous aimez pouvoir avoir accès à vos fichiers depuis le net, il est plus simple d’installer un petit apache sur votre SeedBox et du coup d’exposer vos logs de synchro via une URL.

Pour configurer les clés lancer les commandes suivantes:

ssh-keygen -t rsa

Lors de la création, ne pas changer le fichier contenant la clé. Laisser le passphrase vide. Si le passphrase n’est pas vide, il servirait de mot de passe de substitution pour la connexion et la manipulation ne servirait alors à rien.

Generating public/private dsa key pair.
Enter file in which to save the key (/home/batch/.ssh/id_rsa):�
Enter passphrase (empty for no passphrase):�
Enter same passphrase again:

Envoyer votre clé publique dans les clé connues de votre NAS via la commande:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@monippublique

Ne pas oubliez d’ouvrir le port 22 au niveau de votre routeur.

Pour ne pas avoir de mauvaises surprises, testez la connexion manuellement:

ssh root@monippublique

Si la configuration est réussi, la connexion ne vous demandera pas de mot de passe.

Félicitations !
Votre SeedBox transférera maintenant les téléchargements terminés directement sur votre NAS toutes les heures de manière automatique.

Partager :

  • Epingler !

Written by Arnaud


Related Posts



Script de synchronisation de SeedBox version 2
mars 3, 2013

16 Comments


haseo51@gmail.com
1 years ago

(Reply)



Salut,

Merci pour tes tuto qui sont super géniaux et ton script de la mort que je n’aurai surement pas pu refaire.
Par contre en étant batch il sera possible de récupérer les fichiers dans /home/downloader ? Avec des droits tel que 755 j’imagine que oui, faut encore que ces droits soient appliqués.

Aussi au niveau du blog, pour commenter on ne sait pas quels champs correspond à quoi, un peu embêtant pour poster un comment’ sachant qu’une erreur apparait tout le temps.

    Arnaud
    1 years ago

    (Reply)



    Effectivement, il faut que l’utilisateur batch puisse lire les fichiers dans le dossier /home/downloader.
    Soit tu as les droits 755 sur le dossier, et ça doit suffire pour que batch puisse aller lire les fichiers, soit tu ajoutes l’utilisateur batch dans le groupe « debian-transmission » en plus des droits 755.

    Pour ce qui est des champs des commentaires, je vais voir ce que je peux faire.

    N’hésites pas à partager le lien de mon blog a tes amis.
    D’ici peu de temps, je compte mettre un formulaire pour m’envoyer des demandes de tutos.
    Si tu as des idées, elles sont les bienvenues !

Desjardins Jérôme
4 months ago

(Reply)



Bonjour,

Je voulais savoir si avec ton script on récupère un fichier sur le NAS en question, si on supprime/déplace le fichier du dossiers de réception vers un autre dossier (potentiellement pour le ranger après l’avoir reçu/vu un fois).

Rsync fait quoi ? il retélécharge? il ignore ? ou il supprime côté serveur ?

En fait sa m’arrangerai la deuxième ou troisième ! Si Non, il y a t’il un argument ou un config pour que rsync ait ce comportement ?

Merci!

    Arnaud
    4 months ago

    (Reply)



    Bonjour,

    Mon script fonctionne de la manière suivante, il compare via rsync le dossier du serveur au dossier sur le NAS.
    Si un fichier est manquant sur le NAS, il sera envoyé.
    Si un fichier est présent sur le NAS, rsync compare le fichier et le met à jour si besoin.

    Si tu renommes, déplaces ou supprimes un fichier sur le NAS, il sera téléchargé à la prochaine synchronisation.
    Pour moi, il n’est pas vraiment possible d’obtenir le fonctionnement que tu recherche. La raison est simple, qu’est ce qui va différencier un fichier qui a été déplacé et qui n’est donc pas présent sur ton NAS et un fichier qui n’a simplement pas encore été téléchargé?

    Niveau configuration de rsync, la seule chose que j’ai pu voir, c’est la suppression d’un fichier qui est présent sur le NAS s’il n’est pas présent sur ton serveur.

    Ce que je fais moi, c’est faire le ménage régulièrement après la synchronisation une fois que je suis sur que tout est bien téléchargé sur mon NAS. De cette manière, ils ne sont pas retéléchargé si je les modifies sur mon NAS.

    J’espère que je vais avoir répondu à ta question.

Matth
4 months ago

(Reply)



Yosh, ton tuto déchire, merci beaucoup.

Cependant j’ai quelques soucis pour obtenir la commande useradd (« -ash: useradd: not found »).

Je suis sur un Synology DS210j avec DSM 4.0.

Il faut faire des manips particulières pour pouvoir faire ces commandes ? Désolé si j’ai raté une étape avant de faire le tuto :s

Merci

    Arnaud
    4 months ago

    (Reply)



    Merci c’est gentils.

    J’ai une version un poil amélioré que je risque de mettre en ligne très prochainement.
    Pour ce qui est du useradd, je pense que sur le synology, il vaut mieux utiliser le système de création d’utilisateur intégré au DSM. Je n’ai jamais essayé de faire marcher ce script sur mon Synology.

Michel
3 months ago

(Reply)



bonsoir

merci pour ton script très utils. penses tu que l’on puisse le modifier pour qu’il copie 2 répertoires différents sur 2 NAS différents ? en effet je partage ma seedbox avec un colloc.

    Arnaud
    3 months ago

    (Reply)



    Pour répondre à ta question, j’ai fais une nouvelle version de mon script permettant de gérer de configuration propre à chaque utilisateur de la seedbox.
    Il sera possible de configurer le répertoire de base à synchroniser, le NAS distant sur lequel envoyer les fichiers, les plages horraires etc.

    Je ferais, je pense, un article très prochainement.

Michel
3 months ago

(Reply)



J’ai un souci le script ne se lance pas tout seul et lorsque je le lance à la main j’ai ça en message d’erreur :

sh: rsync: not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: remote command not found (code 127) at io.c(601) [sender=3.0.7]

tu as une idée ?

merci

    Arnaud
    3 months ago

    (Reply)



    Je pense que le problème vient du fais que la commande rsync n’est pas trouvé sur ton serveur.
    Tu le lances sur un NAS Synology?

    Si c’est le cas, je crois que rsync n’est pas utilisable aussi simplement que sur un serveur dédié.
    As tu activé le ssh sur ton nas?

kiwil
3 months ago

(Reply)



bonjour, merci pour ton script et tuto super bien fait, sa marche nikel chez moi. Apres j’aimerais savoir si il est possible de récupérer l’information quelque par pour voir ou le transfert en est.

    Arnaud
    3 months ago

    (Reply)



    Ce que j’ai fais pendant un moment, c’est installer un serveur apache qui rend disponible le dossier logs du batch. De cette manière, via une simple url je pouvais voir l’avancement du téléchargement.

    Après les logs ne sont pas forcement bien fait, mais ca permet de voir l’avancement.

Michel
3 months ago

(Reply)



ta nouvelle version sera prete quand à ton avis ? nous sommes impatient :)

    Arnaud
    3 months ago

    (Reply)



    La nouvelle version est déjà prête, il faut juste que je trouve le temps de zip le script et de faire l’article sur mon blog…
    Je vais faire mon maximum pour mettre l’article ce weekend.

    Au programme:
    - Gestion multi synchro avec configuration propre à chaque synchro
    - Démarrage d’une synchro complète (toute les conf en parallèles)
    - Démarrage d’une synchro d’une configuration uniquement
    - Arret de toutes les synchro
    - Arret d’une synchro d’une configuration uniquement
    - Affichage en direct des logs d’une synchro

    C’est ce que j’utilise sur ma seedbox puisque je la partage avec des amis.
    Par contre, l’installation du script se fait uniquement sur la seedbox, avec cette version, il n’est plus possible de l’installer sur le NAS par exemple.
    C’est logique puisque c’est le script qui va connaitre l’ensemble des configuration de synchro.

      Michel
      3 months ago


      Parfait fait au mieux !

je suis en vacance h24
3 months ago

(Reply)



ton oncle dois faire beaucoup de films lool


Leave a Reply

  Cancel Reply


32

subscribers

93

followers

  • Recent Posts

    • Arducopter : un drone à base d'Arduino
      mars 4, 2013
    • Transmission Remote GUI
      mars 3, 2013
    • Script de synchronisation de SeedBox version 2
      mars 3, 2013
    • Mechatron : Un mini Tank arduino
      janvier 29, 2013
    • Deployd : le développement d'API pour les nuls
      janvier 28, 2013
  • Popular Posts

    • Installation d'une SeedBox
      septembre 25, 2011
    • Android 4.0.3 sur VirtualBox
      mars 16, 2012
    • Script de synchronisation de SeedBox version 2
      mars 3, 2013
    • Récupérer automatiquement les téléchargements de sa SeedBox
      décembre 29, 2011
    • Contrôler son XBMC avec un iPad
      janvier 17, 2012
  • Tags

    airplay android animus application Assassin's creed 2 Assassin's creed 3 autodesk inventor beta cao center cfao conception 3D connor cron dessin industriel dessin technqiue developpement download drone dédié eden htpc install installation ipad jailbreak let's play linux media media center modelisation 3D modélisme nas openelec raspberry pi rsync seedbox server serveur synologie taches torrent ubisoft ubuntu xbmc



Copyright © 2013 - LeGeekTechno
Un site web réalisé par Arnaud Piroelle