Magazine High tech

Synchroniser votre seedbox avec votre NAS ou votre ordinateur

Publié le 24 mai 2013 par Cr@zy @crazyws

Synchroniser votre seedbox avec votre NAS ou votre ordinateur

Pour tous ceux qui possèdent une seedbox, vous avez sans doute déjà pensé à vouloir synchroniser les fichiers de votre seedbox avec votre NAS ou votre ordinateur.
Pour cela il existe plusieurs solutions et nous allons ici en aborder deux.

  • ftp-sync
  • rsync et curlftpfs

Chacun de ces solutions a été testée sur un environnement sous Linux.
Si vous êtes sur Windows, vous pouvez le faire très facilement avec CobianBackup.

ftp-sync

Avec ftp-sync, vous pourrez synchroniser facilement votre seedbox avec votre NAS ou votre ordinateur sous Linux via un simple script shell.

Pour pouvoir utiliser ce script, vous aurez besoin de awk et md5sum qui sont normalement déjà installés sur votre environnement. curlftpfs est également requis pour monter sur son système de fichier, un autre système de fichier distant, à travers la connexion FTP vers votre seedbox.

Pour l'installer, entrez les commandes suivantes :

$ cd /etc/init.d/
$ wget https://raw.github.com/crazy-max/ftp-sync/master/ftp-sync.sh -O ftp-sync
$ chmod +x ftp-sync
$ update-rc.d ftp-sync defaults

Vous devrez changer certaines variables dans le script pour rendre celui-ci fonctionnel.

Tout d'abord les informations de connexion FTP :

  • FTP_HOST : Le nom d'hôte ou l'adresse IP de votre serveur FTP.
  • FTP_PORT : Le port de votre serveur FTP (par défaut 21).
  • FTP_USER : Le nom d'utilisateur FTP.
  • FTP_PASSWORD : Le mot de passe FTP.
  • FTP_SRC : Le chemin vers le répertoire que vous souhaitez synchroniser.

Ensuite il y a des variables concernant des spécificités lors du téléchargement :

  • DL_USER : Le nom d'utilisateur Linux qui sera affecté au fichier lors du téléchargement. Optionnel.
  • DL_USER : Le nom du groupe Linux qui sera affecté lors du téléchargement. Optionnel.
  • DL_CHMOD : La permission à affecter au fichier téléchargé. Optionnel. (par exemple 644)
  • DL_PATTERN : Appliquer un filtre pour rechercher des fichiers avec une expression régulière. Séparez chaque expression régulière par une virgule. Optionnel. (par exemple Game.Of.Thrones*.avi;Burn.Notice.*.avi)
  • DL_RETRY : Nombre de tentatives en cas d'échec du téléchargement. (3 par défaut)
  • MD5_ENABLED : Activer la vérification des fichiers déjà téléchargés. Peut-être utile si lors du téléchargement d'un fichier vous déplacez celui-ci mais que vous ne souhaitez pas le télécharger à nouveau. Activé par défaut.
  • MD5_FILE : Le chemin vers le fichier contenant le hash du nom de chaque fichier téléchargé. Par défaut /etc/ftp-sync/ftp-sync.md5

Une fois que vous avez entré toutes les options adéquates, il ne vous reste plus qu'à l'exécuter :

$ /etc/init.d/ftp-sync {DIR_DEST}

Remplacez {DIR_DEST} par le répertoire de destination. Par exemple "/seedbox/". Vous devriez avoir des logs de ce type :

FTP Sync v1.0 (2013/05/23 17:07:07)
Connecting to 10.0.0.1:21...
Source: ftp://10.0.0.1:21/complete/
Destination: /seedbox/
Log file: /etc/ftp-sync/logs/ftp-sync-20130523170707.log
MD5 file: /etc/ftp-sync/ftp-sync.md5
--------------
Finding files...
--------------
Process file : Burn.Notice.S06E16.VOSTFR.HDTV.XviD.avi
Hash: 5cc4931d64bd5579e46041b7139bde9f
Size: 351M
Status : Already downloaded and valid. Skip download...
Time spent: 00:00:00
--------------
Process file : Burn.Notice.S06E17E18.VOSTFR.HDTV.XviD.avi
Hash: 5cc4931d64bd5579e46041b7139bde9f
Size: 703M
Status : Already downloaded and valid. Skip download...
Time spent: 00:00:00
--------------

Le fichier contenant les hashs devrait ressembler à ceci :

baf87b6719e9f5499627fc8691efbd3c Burn.Notice.S06E16.VOSTFR.HDTV.XviD.avi
92d1d13049bd148f89ffa1d501f153f5 Burn.Notice.S06E17E18.VOSTFR.HDTV.XviD.avi

Pour générer le hash en question, je ne me base pas sur l'intégrité du fichier mais sur son chemin. Car vérifier l'intégrité implique automatiquement le téléchargement de celui-ci. Une solution serait par exemple à partir de votre seedbox de générer automatiquement le hash d'un fichier téléchargé dans un fichier plat.

Vous pouvez si vous le souhaitez mettre en place un cron en appelant le script dans le crontab. Par exemple :

0 4 * * * cd /etc/init.d/ & ./ftp-sync /seedbox/ >/dev/null 2>&1

Cela synchronisera votre FTP avec le répertoire /seedbox/ chaque jour à 4h.

Si vous souhaitez plus d'infos, je vous invite à consulter le README.
Vous pouvez télécharger gratuitement ftp-sync sur GitHub. Si vous rencontrez des problèmes ou si avez des idées d'améliorations, merci de poster une issue sur GitHub.

rsync et curlftpfs

rsync est un bon logiciel pour la synchronisation de fichiers à distance. Couplé à curlftpfs, il vous permettra de synchroniser votre seedbox avec votre NAS.

Pour procéder à l'installation tapez la commande suivante :

$ apt-get install curlftpfs rsync

Créez ensuite un répertoire pour le point de montage du FTP :

$ mkdir /mnt/seedbox/

Ajoutez ensuite le point de montage curlftpfs dans fstab afin qu'il soit monté à chaque démarrage du système :

$ vi /etc/fstab

Et mettez-y :

curlftpfs#{user}:{password}@{host}:{port} /mnt/seedbox fuse rw,allow_other,uid={userid},gid={groupid},umask={umask} 0 0

Remplacez :

  • {user} par le nom d'utilisateur FTP
  • {password} par le mot de passe FTP
  • {host} par le nom d'hôte ou l'adresse IP du serveur FTP
  • {port} par le port du serveur FTP (21 par défaut)
  • {userid} par l'ID d'un utilisateur local. Ces IDs sont spécifiés dans le fichier /etc/passwd (par exemple 1001)
  • {groupid} par l'ID d'un groupe local. Ces IDs sont spécifiés dans le fichier /etc/group
  • {umask} par le masque de création de fichier (par exemple 002). Voir la page wikipedia de umask pour plus d'explications.

Sauvegardez et maintenant montez le FTP :

$ mount /mnt/seedbox/

Vous pouvez ensuite créer un script de ce style pour mettre en place la synchronisation via rsync.

$ vi /etc/init.d/seedbox
#! /bin/bash

SRC="/mnt/seedbox/"
DEST="/seedbox/"
LOG_FILE="/var/log/seedbox/rsync_`date +%Y%m%d`.log"
LOG_EMAIL="foo@example.com"

if ! grep -qs '/mnt/seedbox' /proc/mounts
then
  mount /mnt/seedbox
  echo 'Seedbox mounted on' `hostname` | mail -s "Seedbox mounted" $LOG_EMAIL
  sleep 3
fi

rsync -avuz $SRC $DEST --progress --log-file=$LOG_FILE
cat $LOG_FILE | mail -s "Seedbox download" $LOG_EMAIL

exit 0

Rendez le script exécutable :

$ chmod +x /etc/init.d/seedbox

Voilà et comme pour ftp-sync, vous pouvez mettre en place un cron et vous recevrez quotidiennement un e-mail avec les logs de synchronisation.


Vous pourriez être intéressé par :

Retour à La Une de Logo Paperblog

Ces articles peuvent vous intéresser :

A propos de l’auteur


Cr@zy 408 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte