Pourquoi la base de données minidlna n'est-elle pas mise à jour?

je développe un serveur MiniDLNA pour diffuser les médias sur WiFi. Les fichiers existants sont affichés correctement. Cependant, lorsque j'ajoute de nouveaux fichiers aux dossiers médias, les modifications ne sont pas mises à jour pour les clients MiniDLNA. J'ai également essayé de redémarrer le serveur, mais il ne reflète pas les modifications.

j'ai changé inotify_interval = 60 mais c'est toujours pas de mise à jour files.db qui est la base de données de la liste des médias de MiniDLNA. Si je supprime cette base de données et redémarre le serveur, il affiche les modifications.

Ne quelqu'un sait quel peut être le problème?

35
demandé sur Stickers 2011-03-03 14:56:41

5 réponses

en résumé, la façon la plus fiable D'avoir MiniDLNA rescanner tous les fichiers médias est en émettant l'ensemble suivant de commandes:

$ sudo minidlnad -R
$ sudo service minidlna restart

script côté Client pour rescan server

cependant, de temps en temps MiniDLNA tourne sur un serveur. Voici un script côté client pour demander un rescan sur un tel serveur:

#!/bin/bash
ssh -t server.on.lan 'sudo minidlnad -R && sudo service minidlna restart'
32
répondu Serge Stroobandt 2018-02-14 09:35:17

AzP a déjà fourni la plupart des informations, mais certaines sont inexactes.

tout d'Abord, il n'y a pas une telle option inotify_interval. La seule option qui existe est notify_interval et n'a rien à voir avec inotify.

pour clarifier,notify_interval contrôle la fréquence à laquelle le serveur (mini)dlna s'annonce dans le réseau. La valeur par défaut de 895 signifie qu'il s'annoncera lui-même environ une fois toutes les 15 minutes, ce qui signifie que les clients auront besoin au plus 15 minutes pour trouver le serveur. J'utilise personnellement 1-5 minutes en fonction de la volatilité du client dans le réseau.

En terme de minidlna pour trouver les fichiers qui ont été ajoutés, il y a deux options:

  • le premier équivaut à supprimer le fichier files.db et consiste à redémarrer minidlna tout en passant le -R argument, qui force un sauvetage complet et construit la base de données à partir de zéro. Depuis la version 1.2.0 il y a maintenant aussi le -r argument qui exécute une reconstruction action. Cela préserve toute base de données existante et supprime et ajoute des enregistrements anciens et nouveaux, respectivement.
  • la seconde est de compter sur inotify événements par le paramètre inotify=yes et redémarrage de minidlna. Si inotify est réglé sur =no, la seule option pour mettre à jour la base de données est le rescan complet forcé.

en outre, afin d'avoir inotify le système de fichiers doit supporter inotify events, ce qui n'est pas le cas dans la plupart des systèmes de fichiers distants. Si vous avez minidlna tournant sur NFS ne verra pas d'événements inotifiés car ceux-ci sont générés du côté du serveur et pas du côté du client.

Enfin, même si inotify fonctionne et est supporté par le système de fichiers, l'utilisateur sous lequel minidlna tourne doit pouvoir lire le fichier, sinon il ne pourra pas récupérer les métadonnées nécessaires. Dans ce cas, le fichier de log (généralement /var/log/minidlna.log) doit contenir des informations utiles.

26
répondu unode 2017-11-14 10:13:51

MiniDLNA utilise inotify, qui est une fonctionnalité du noyau Linux, utilisée pour découvrir des changements dans des fichiers et répertoires spécifiques du système de fichiers. Pour que cela fonctionne, vous devez activer le support inotify dans votre noyau.

notify_interval (notez l'absence d'une conduisant 'i'), autant que je puisse en dire, n'est utilisé que si vous avez inotify désactivé. Pour utiliser le notify_interval (ie. le serveur de "sondage" le fichier système pour que les changements au lieu d'être automatiquement notifié), vous devez désactiver le inotify fonctionnalité.

C'est à quoi il ressemble dans mon /etc/minidlna.conf:

# set this to no to disable inotify monitoring to automatically discover new files
# note: the default is yes
inotify=yes

assurez-vous que inotify est activé dans le noyau.

si elle n'est pas activée, et que vous ne voulez pas l'activer, un rescan forcé est le moyen de forcer MiniDLNA à re-scanner le lecteur.

4
répondu AzP 2014-05-09 12:49:39

j'ai récemment découvert que minidlna ne met pas à jour la base de données si le fichier multimédia est un lien dur. Si vous voulez que ces fichiers apparaissent dans la base de données, un rescan complet est nécessaire.

ex: Si vous avez un fichier /home/films/foo.mkv et un hardlink dans /home/minidlna/vidéo/foo.mkv, où '/home/minidlna' est votre part de minidlna, vous devrez faire un rescan jusqu'à ce que ce fichier apparaisse dans la base de données (et par la suite Votre client dlna).

j'essaie toujours de trouver un moyen autour de cette. Si quelqu'un a une entrée, c'est la plupart de bienvenue.

2
répondu Karan Bhalla 2015-01-21 19:43:51

il y a un patch pour le code source de minidlna à sourceforge disponible qui ne fait pas un rescan complet, mais une sorte de scan incrémental. Qui a bien fonctionné, mais avec une version ultérieure, le patch est cassé. Voir ici Lien vers SF

ce qui Concerne Gerry

1
répondu user1226230 2017-05-03 10:07:12