为什么minidlna数据库没有被刷新?

时间:2011-03-03 11:56:41

标签: dlna

我正在开发一个MiniDLNA服务器来通过WiFi传输媒体。现有文件正确显示。但是,当我向媒体文件夹添加新文件时,MiniDLNA客户端不会更新更改。我也尝试重新启动服务器,但它没有反映出这些变化。

我更改了inotify_interval = 60但它仍然没有更新files.db这是MiniDLNA媒体列表数据库。如果我删除此数据库并重新启动服务器,则会显示更改。

有谁知道问题可能是什么?

6 个答案:

答案 0 :(得分:39)

总之,让MiniDLNA重新扫描所有媒体文件的最可靠方法是发出以下命令集:

$ sudo minidlnad -R
$ sudo service minidlna restart

重新扫描服务器的客户端脚本

但是,MiniDLNA经常会在服务器上运行。以下是在此类服务器上请求重新扫描的客户端脚本:

#!/usr/bin/env bash
ssh -t server.on.lan 'sudo minidlnad -R && sudo service minidlna restart'

答案 1 :(得分:28)

AzP已经提供了大部分信息,但有些信息不正确。

首先,没有这样的选项inotify_interval。唯一存在的选项是notify_interval,与inotify无关。

因此,为了澄清,notify_interval控制(迷你)dlna服务器在网络中宣布自己的频率。默认值895意味着它将每15分钟宣布一次,这意味着客户最多需要15分钟才能找到服务器。我个人使用1-5分钟,具体取决于客户在网络中的波动性。

在获取minidlna以查找已添加的文件方面,有两个选项:

  • 第一个相当于删除文件files.db,并且在传递-R参数时重新启动minidlna,这会强制完全重新扫描并从头开始构建数据库。从版本1.2.0开始,现在还有-r参数执行重建操作。这将保留所有现有数据库,并分别删除和添加新旧记录。
  • 第二个是通过设置inotify并重新启动minidlna来依赖inotify=yes个事件。如果inotify设置为=no,则更新文件数据库的唯一选项是强制完全重新扫描。

此外,为了使inotify正常工作,文件系统必须支持inotify个事件,而在大多数远程文件系统中并非如此。如果您在minidlna上运行NFS,则不会看到任何inotify事件,因为这些事件是在服务器端生成的,而不是在客户端上生成的。

最后,即使inotify正在运行并且受文件系统支持,运行minidlna的用户也必须能够读取该文件,否则将无法检索必要的元数据。在这种情况下,日志文件(通常为/var/log/minidlna.log)应包含有用的信息。

答案 2 :(得分:5)

MiniDLNA使用inotify,这是Linux内核中的一项功能,用于发现文件系统上特定文件和目录的更改。要使其工作,您需要在内核中启用inotify支持。

notify_interval(注意缺少一个领先的'i'),据我所知,只有在禁用inotify的情况下才会使用。要使用notify_interval(即让服务器“轮询”文件系统以进行更改而不是自动通知它们),您必须禁用inotify功能。

这就是我在/etc/minidlna.conf中的看法:

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

确保在内核中启用了inotify。

如果未启用,并且您不想启用它,则强制重新扫描是强制MiniDLNA重新扫描驱动器的方法。

答案 3 :(得分:2)

我最近发现,如果媒体文件是硬链接,minidlna不会更新数据库。如果您希望这些文件显示在数据库中,则需要完全重新扫描。

例如:如果你有/home/movies/foo.mkv文件和/home/minidlna/video/foo.mkv中的硬链接,其中'/ home / minidlna'是你的minidlna共享,你将不得不这样做重新扫描直到该文件出现在db(以及随后的dlna客户端)中。

我仍在努力寻找解决方法。如果有人有任何意见,那就非常欢迎。

答案 4 :(得分:1)

在sourceforge上有一个minidlna源代码的补丁,它不能完全重新扫描,而是一种增量扫描。这很好,但是在一些更新的版本中,补丁被打破了。见Link to SF

此致 格里

答案 5 :(得分:-1)

使用crontab根解析

10 * * * * /usr/bin/minidlnad -r