web-dev-qa-db-ja.com

minidlnaデータベースが更新されないのはなぜですか?

WiFi経由でメディアをストリーミングするMiniDLNAサーバーを開発しています。既存のファイルは適切に表示されます。ただし、新しいファイルをメディアフォルダーに追加すると、MiniDLNAクライアント間で変更が更新されません。サーバーを再起動しようとしましたが、変更が反映されません。

私が変更され inotify_interval = 60しかし、まだ更新されていませんfiles.dbこれは、MiniDLNAメディアリストデータベースです。このデータベースを削除してサーバーを再起動すると、変更が表示されます。

誰が問題が何であるかを知っていますか?

41
Dipen

要約すると、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'
41

AzPはすでにほとんどの情報を提供していますが、一部は間違っています。

まず第一に、そのようなオプションはありませんinotify_interval。存在する唯一のオプションはnotify_intervalであり、inotifyとは関係ありません。

したがって、明確にするために、notify_intervalは、(ミニ)dlnaサーバーがネットワーク内でアナウンスする頻度を制御します。デフォルト値の895は、約15分ごとに1回アナウンスすることを意味します。つまり、クライアントはサーバーを見つけるのに最大15分必要です。ネットワーク内のクライアントのボラティリティに応じて、個人的に1〜5分を使用します。

追加されたファイルを検索するためにminidlnaを取得するという点では、2つのオプションがあります。

  • 最初の方法はファイルfiles.dbを削除することと同等で、-R引数を渡しながらminidlnaを再起動することで、完全な再スキャンを強制し、データベースをゼロから構築します。バージョン1.2.0以降、再構築アクションを実行する-r引数もあります。これにより、既存のデータベースが保持され、古いレコードと新しいレコードがそれぞれ削除および追加されます。
  • 2つ目は、inotify=yesを設定してminidlnaを再起動することにより、inotifyイベントに依存することです。 inotify=noに設定されている場合、ファイルデータベースを更新する唯一のオプションは強制完全再スキャンです。

さらに、inotifyを機能させるために、ファイルシステムはinotifyイベントをサポートする必要がありますが、これはほとんどのリモートファイルシステムには当てはまりません。 NFS上でminidlnaを実行している場合、クライアントではなくサーバー側で生成されるため、inotifyイベントは表示されません。

最後に、inotifyが機能し、ファイルシステムでサポートされている場合でも、minidlnaを実行しているユーザーはファイルを読み取れる必要があります。そうしないと、必要なメタデータを取得できません。この場合、ログファイル(通常は/var/log/minidlna.log)に有用な情報が含まれている必要があります。

28
unode

MiniDLNAは、Linuxカーネル内の機能であるinotifyを使用します。これは、ファイルシステム上の特定のファイルおよびディレクトリの変更を検出するために使用されます。動作させるには、カーネルで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にドライブの再スキャンを強制する方法です。

5
AzP

最近、メディアファイルがハードリンクの場合、minidlnaがデータベースを更新しないことを発見しました。これらのファイルをデータベースに表示するには、完全な再スキャンが必要です。

例:ファイル/home/movies/foo.mkvと/home/minidlna/video/foo.mkvにハードリンクがあり、「/ home/minidlna」がminidlna共有の場合、再スキャンを実行する必要がありますそのファイルは、db(およびそれに続くdlnaクライアント)に表示されます。

私はまだこれを回避する方法を探しています。誰でも何か入力があれば、それは大歓迎です。

2
Karan Bhalla

Sourceforgeにはminidlnaのソースコード用のパッチがあり、完全な再スキャンではなく、一種のインクリメンタルスキャンを行います。それはうまくいきましたが、それ以降のバージョンではパッチが壊れています。こちらをご覧ください SFへのリンク

よろしくジェリー

1
user1226230