Mes 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
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.
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.