Подтвердить что ты не робот

Почему обновленная база данных minidlna не обновляется?

Я разрабатываю сервер MiniDLNA для потоковой передачи мультимедиа через WiFi. Существующие файлы отображаются правильно. Однако, когда я добавляю новые файлы в папки мультимедиа, изменения не обновляются в клиентах MiniDLNA. Я также попытался перезапустить сервер, но он не отражает изменений.

Я изменил inotify_interval = 60, но он все еще не обновляет files.db, который является базой данных медиаданных MiniDLNA. Если я удалю эту базу данных и перезапустим сервер, она покажет изменения.

Кто-нибудь знает, в чем проблема?

4b9b3361

Ответ 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