Почему обновленная база данных minidlna не обновляется?
Я разрабатываю сервер MiniDLNA для потоковой передачи мультимедиа через WiFi. Существующие файлы отображаются правильно. Однако, когда я добавляю новые файлы в папки мультимедиа, изменения не обновляются в клиентах MiniDLNA. Я также попытался перезапустить сервер, но он не отражает изменений.
Я изменил inotify_interval = 60
, но он все еще не обновляет files.db
, который является базой данных медиаданных MiniDLNA. Если я удалю эту базу данных и перезапустим сервер, она покажет изменения.
Кто-нибудь знает, в чем проблема?
Ответы
Ответ 1
Таким образом, наиболее надежный способ повторного сканирования всех файлов мультимедиа 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'
Ответ 2
AzP уже предоставил большую часть информации, но некоторые из них неверны.
Прежде всего, такой опции inotify_interval
нет. Единственный вариант, который существует, notify_interval
и не имеет ничего общего с inotify
.
Чтобы уточнить, notify_interval
определяет, как часто (мини) dlna-сервер объявляет себя в сети. Значение по умолчанию 895 означает, что оно объявит о себе каждые 15 минут, то есть для поиска сервера потребуется не более 15 минут. Я лично использую 1-5 минут в зависимости от волатильности клиента в сети.
С точки зрения получения minidlna для поиска файлов, которые были добавлены, есть два варианта:
- Первое равнозначно удалению файла
files.db
и состоит в перезапуске minidlna при передаче аргумента -R
, что заставляет полностью выполнять повторное сканирование и строить базу данных с нуля. Начиная с версии 1.2.0 теперь также есть аргумент -R
, который выполняет операцию восстановления. Это сохраняет любую существующую базу данных и падает и добавляет старые и новые записи, соответственно.
- Во-вторых, полагаться на события
inotify
, установив inotify=yes
и перезапустив минидаль. Если для параметра inotify
установлено значение =no
, единственным вариантом обновления базы данных файла является принудительное полное повторное сканирование.
Кроме того, для обеспечения inotify
файловая система должна поддерживать события inotify
, что не относится к большинству удаленных файловых систем. Если у вас есть minidlna, работающий над NFS, он не увидит никаких событий inotify, потому что они генерируются на стороне сервера, а не на клиенте.
Наконец, даже если inotify
работает и поддерживается файловой системой, пользователь, под которым работает minidlna, должен иметь возможность читать файл, иначе он не сможет получить необходимые метаданные. В этом случае файл журнала (обычно /var/log/minidlna.log
) должен содержать полезную информацию.
Ответ 3
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 повторно отсканировать диск.
Ответ 4
Недавно я обнаружил, что minidlna не обновляет базу данных, если файл мультимедиа является жестким. Если вы хотите, чтобы эти файлы отображались в базе данных, необходимо выполнить полное повторное сканирование.
ex: Если у вас есть файл /home/movies/foo.mkv и hardlink в /home/minidlna/video/foo.mkv, где '/home/minidlna' - ваша доля minidlna, вам нужно будет сделать повторное сканирование до того, как этот файл появится в db (а затем и на вашем dlna-клиенте).
Я все еще пытаюсь найти способ обойти это. Если у кого-то есть какой-либо вклад, он очень приветствуется.
Ответ 5
Существует патч для исходного кода minidlna в sourceforge, который не производит полного повторного сканирования, а своего рода инкрементное сканирование. Это сработало хорошо, но с некоторой более поздней версией патч сломан. См. Здесь Ссылка на SF
Отношения
Gerry
Ответ 6
Решено с помощью корня crontab
10 * * * * /usr/bin/minidlnad -r