5

比較的シンプルなドキュメント ストレージを作成したいのですが、いくつかの要件があります。私の考えは、ファイルがすぐにストレージに到着すると、別のツール/デーモンによってスキャンされ、処理されるというものでした。

(疑似) DMS は、NFS および Samba 経由のアクセスを提供する必要があります。これまで見てきたように、受信ファイルをいくつかのフックに渡すには、パイプで問題ありません。しかし、ディレクトリをパイプとして作成する方法があるかどうか疑問に思いました。私はまだ名前付きパイプしか見ていません。

このディレクトリ内の着信ファイルを取得するプロセスは、MIME タイプの推測、CRC32 チェック (DB の値に対して) などを行う PHP スクリプトです...これを行う方法のヒントはありますか?

編集:次の説明で少し明確になることを願っています-ウイルススキャンとメタプロセスによってすぐに処理される(そして最終的に保存される)ファイルを配置できるSambaとNFSを介して「エンドポイント」を提供する方法を探しています.

4

3 に答える 3

9

FUSEを使用して、実際のファイル システム (バックエンド ファイル システム) の上に位置し、最終的にデータをバックエンドに書き込む前に必要な検証を実行する中間 Linux ファイル システムを実装できます。次に、NFS/Samba 経由でそのファイル システムを提供します。

もう 1 つの可能性は、inotify API を使用して、ファイル システム ツリーの変更を通知し、必要な操作を実行することです。このアプローチの問題点は、処理が非同期になることです。そのため、マルウェア ファイルは、スキャンされて削除されるまでの短い時間公開されます。

更新: ClamFSはまさにそれを行います!

于 2012-06-24T11:58:08.033 に答える
3

私の理解が正しければ、あなたがしたいことは、ファイル システムに統合された非常に簡単なインターフェイスをエンド ユーザーに提供することです。オペレーティング システム上に通常のフォルダが表示され、ファイルをコピーおよび移動したり、ファイルの名前を変更したりします。コンピュータ上の他のフォルダに対して何を行っていてもかまいません。

ただし、このフォルダはバックグラウンドで実際のフォルダにはなりません。このフォルダの操作を完全に制御したいと考えています。このフォルダーにファイルをコピーするときは、PHP スクリプトでそれを処理する必要があります。この特別なフォルダの下に新しいフォルダを作成すると、別の PHP スクリプトがそれを処理します。

salva が提案したように、自分でファイル システム インターフェイスを作成することは、非常に優れたソリューションです。しかし、それは迅速でも簡単でもありません。PHP をバックエンドとして言及したので、より高いレベルのアプローチが必要だと思います。

あなたの問題には、クライアントとサーバーの2つの側面があります。クライアント側では、posix システムのフォルダーとして、または Windows のドライブとして簡単にマウントできるファイル システムが必要です。これには多くの選択肢があり、あなたが言及したように、Samba と NFS がその 2 つです。

私が理解しているように、PHPでサーバー側を実行します。これを考慮して、Samba や NFS の代わりに WebDav を使用することをお勧めします。サーバー側で実装する方がはるかに簡単です。ほぼすべての最新のオペレーティング システムで使用できます。webdav アクセス用のブラウザ プラグインさえあるので、クライアントに複数のインターフェイスを非常に簡単に提供できます。

サーバー側で PHP を使用する場合は、sabredavというオープン ソースの php ライブラリがあります。Google で簡単に検索するだけで、このチュートリアルも見つかりました。

このセットアップでは、ファイルを好きなように処理できます。これは、nginx や Apache などの Web サーバーを PHP 側のシステムに埋め込むか、サーバー上で実行されるサービスとして提供することにより、単一マシンのシステムにすることができます。

あなたの質問を正しく理解できたことを願っています。これがあなたが探していた解決策です。

更新: 私が提案したような別のソリューションを使用する機会がなく、実際には Samba と NFS でなければならない場合。どちらのプロトコルも、PHP で実装するには多すぎます。それは大きな負担となり、長期的な頭痛の種となります。

ただし、通常の NFS/Samba サーバーを使用して、アプリケーションを使用してバックグラウンドでファイルの更新を監視することができます。これは、ファイルのタグ付けやウイルス スキャンなど、提供したい特別な機能が、おそらく許容できる遅延で利用可能になることを意味します。これを実装するには、システム上のすべてのファイルとフォルダーをチェックして、変更された/新しいフォルダーで作業することができます。簡単なことは、すべてのアクションのログ記録メカニズムを備えたサーバーを使用し、そのログを追跡することです。これは、クライアント マシンを直接接続するよりも優れています。システムを正しく設計すれば、非常に大規模なシステムであっても、ファイルの変更とそれらの処理の間の待ち時間は非常に妥当なものになります。このために、nas4free単一のシステムから多くのインターフェイスを提供し、その機能ページによると、syslog 機能があるため、非常に優れたソリューションになる可能性があります。

于 2012-06-28T08:26:45.580 に答える
2

SMBまたはNFS共有であることが実際に必要ですか? カスタムサーバーコードを作成/使用する方がおそらく良いと思います。SMB と NFS は通常のファイルを転送するように設計されており、ユース ケースとはかなりかけ離れています。

于 2012-06-23T21:38:34.353 に答える