Table of Contents

Comment : déplacer les emplacements de la bibliothèque sans perdre les métadonnées

Il s'agit d'un guide expliquant comment modifier l'emplacement des fichiers de bibliothèque sans perdre toutes les métadonnées créées.

Il y a deux endroits où les choses doivent être mises à jour pour pointer vers le nouveau lecteur. Le premier se trouve dans la base de données et le second dans les fichiers de configuration de Jellyfin.

Faire une sauvegarde

Préparer des sauvegardes au cas de mauvaise manipulation pour réinitialiser à son dernier état de fonctionnement connu.

Mise à jour de la base de données

Installer sqlite3 pour se connecter au fichier de base de données et exécuter des requêtes. Le fichier auquel il faut se connecter est situé dans le dossier de données de Jellyfin, et s'appelle library.db.

Il faut mettre à jour toutes les tables qui doivent être mises à jour : TypedBaseItems et mediastreams et Chapters2.

UPDATE mediastreams SET Path = REPLACE(Path, '/media/driveOld/', '/media/driveNew/');
UPDATE TypedBaseItems SET Path = REPLACE(Path, '/media/driveOld/', '/media/driveNew/');
UPDATE TypedBaseItems SET data = REPLACE(data, '/media/driveOld/', '/media/driveNew/');
UPDATE TypedBaseItems SET Images = REPLACE(Images, '/media/driveOld/', '/media/driveNew/');
UPDATE Chapters2 SET ImagePath = REPLACE(ImagePath, '/media/driveOld/', '/media/driveNew/');

On peut vérifier que tout a fonctionné en exécutant ces requêtes pour vérifier qu'aucun enregistrement n'est renvoyé :

SELECT COUNT(*) FROM TypedBaseItems
WHERE
Path LIKE '/media/VolumeOld%';
SELECT COUNT(*) FROM mediastreams
WHERE
Path LIKE '/media/VolumeOld%';

Une fois que tout est mis à jour dans ces deux tables, il faut mettre à jour les fichiers de configuration locaux de Jellyfin.

Mise à jour des fichiers de configuration Jellyfin

Il faut mettre à jour tous les chemins dans les fichiers sur disque :

find ./root/default/ -type f -name '*.mblink' -exec sed -i 's%/media/driveOld/%/media/driveNew/%g'  {} \;
find ./root/default/ -type f -name "options.xml" -exec sed -i 's%/media/driveOld/%/media/driveNew/%g' {} \;
find ./data/collections/ -type f -name "collection.xml" -exec sed -i 's%/media/driveOld/%/media/driveNew/%g' {} \;
find ./data/playlists/ -type f -name "playlist.xml" -exec sed -i 's%/media/driveOld/%/media/driveNew/%g' {} \;

Vérification

Pour effectuer une dernière vérification des fichiers supplémentaires qui doivent être mis à jour, exécuter :

ag -l /media/Volume /chemin/vers/jellyfin/config/*

Et on obtiendra une liste de fichiers contenant la chaîne /media/Volume.

On peut maintenant démarrer Jellyfin. En fonction des paramètres, Jellyfin peut ne pas analyser immédiatement, alors on il est conseillé de démarrer manuellement une analyse via le tableau de bord Web.