XBMC: Synchroniser les jaquettes entre plusieurs XBMC avec Unison

unison_logoMes media center xbmc ont leurs librairies synchronisées sur une base de données MySQL. Cependant, les « Thumbnails » (images des jaquettes de films, Albums de musique, acteurs…) sont stockées localement sur chaque pc xbmc. Une option « pathsubstitution » permet de stocker ces images à un autre endroit, tel qu’un partage réseau, mais les performances sont bien amoindries lorsque la librairie est conséquente. Etant donné que les fichiers multimédias et la base de données MySQL sont déjà stockés sur un serveur GNU/Linux, l’idée est de créer un repository sur ce serveur, et synchroniser chaque xbmc avec ce dernier. Les différents media centers seront ainsi à jour, et les images seront toujours stockées localement sur chacun d’eux.

 

Topology

 

Les media center exécutent la distribution XBMCbuntu Eden (Debian/Ubuntu 11.10 modifiée)

Le serveur tourne sous la distribution Red Hat CentOS 6.3

Clipboard01

Installation

Sur le serveur:

Créer l’utilisateur xbmc

# useradd -m -d /home/xbmc -u 532 -G public -s /bin/bash -p ****** xbmc

-u : UID de l’utilisateur
-m : créer le répertoire HOME de l’utilisateur
-d : chemin du répertoire HOME
-G groupes de l’utilisateur
-s : shell
-p : mot de passe de l’utilisateur

 

Installer Unison

# yum install unison

La version d’Unison doit être identique sur tous les partenaires de synchronisation. Il est donc nécessaire de vérifier la version.  Pour cela, lancer la commande :

# unison -version

Sur xbmc:

Installer Unison

apt-get install unison

Vérifier que la version d’Unison est identique à celle installée sur le serveur.

 

Afin d’automatiser l’authentification SSH nécessaire à la synchronisation, on génère des clés ssh.

Générer la clé ssh sur l’xbmc

# ssh-keygen -t rsa -b 1024

La clé est générée sans mot de passe afin de permettre l’automatisation de la connexion.

Envoyer la clé sur le serveur distant

# ssh-copy-id -i ~/.ssh/id_rsa.pub xbmc@192.168.1.100

 

Tester la connexion à Unison

# unison -testserver -sshargs '-i .ssh/id_rsa' /home/xbmc/.xbmc/userdata/Thumbnails/ 
ssh://xbmc@192.168.1.100//home/medias/.xbmc/userdata/

 

Résultat :

Connected [//localhost.localdomain//home/medias/.xbmc/userdata -> //xbmc-salon//home/xbmc/.xbmc/userdata/Thumbnails]

 

Editer le fichier de configuration unison de l’utilisateur xbmc:

Unisson gère les profils, un profil étant un fichier de configuration portant l’extension .prf. N’ayant qu’un répertoire à synchroniser, j’ai édité le profil par défaut sur l’xbmc.

# nano ~/.unison/ default.prf
# Unison preferences file

# Root of the synchronization
root = /home/xbmc/.xbmc/userdata
root = ssh://xbmc@192.168.1.100//home/medias/.xbmc/userdata

# Paths to synchronize
path = Thumbnails

# SSH
sshargs = -i /home/xbmc/.ssh/id_rsa

# Options
times = true
auto = true
batch = true
confirmbigdeletes = true
prefer = /home/xbmc/.xbmc/userdata

# Options du journal
log = true
logfile = /var/log/unison/unison.log

Les options sont :

Times : conserve le timestamp des fichiers synchronisés
Auto : Accept automatiquement les actions proposées par défaut.
Batch : supprime les demandes de confirmations. Les conflits seront omis
Prefer : en cas de conflit, le chemin définit sera considéré comme maitre de synchronisation
Confirmbigdeletes : empêche la suppression complète du repository en affichant une demande de confirmation.

Lancer unison :

/usr/bin/unison

Au premier lancement, un avertissement apparait. Validez par ENTER.

warning first time

 

 

La synchronisation commence.

Editer la crontab

# crontab –e

On exécute la synchronisation toutes les 10 minutes.

*/10 * * * * /usr/bin/unison

La configuration xbmc est bien entendu à exécuter sur chaque media center à synchroniser.