2

Webアプリケーション(unix/linuxで実行)のファイルアップロードを行っています。ファイルのアップロードごとに新しいディレクトリを作成することを計画した場合、懸念があるかどうか疑問に思っていますか? これは、Ruby on Rails プラグイン「paperclip」のすぐに使えるアプローチです。Linux/Unix 環境にデプロイする場合、トレードオフが何であるか、またはおそらくそれが問題ではないかどうかについて議論しています。

オプションは次のようになります。

  1. 添付ファイルごとに 1 つのフォルダー - ペーパークリップが箱から出してすぐに動作するように見える方法ごと
  2. おそらくユーザーごとに 1 つのフォルダー (つまり、Web サービスに独自のアカウントを持つ複数のユーザーがいる場合) - ファイル名 (おそらくモデル ID) に一意性を追加する必要があります。
  3. すべての添付ファイルを 1 つのフォルダーに入れます。

質問 - 作成されるディレクトリの数を気にする必要がありますか? サービスが人気だった場合、これは O/S の問題ですか? 別のアカウントを持つユーザーがファイルをアップロードできるようにする Web サイトに関するアドバイスはありますか? ファイルの保存に関しては、どのような構造が適切でしょうか? (私は mysql にファイルを保存するという概念を軽視したと思います。)

ありがとう

4

3 に答える 3

5

Linux で Ext3 フォーマットのドライブを想定しています (最も一般的)。

から ( http://en.wikipedia.org/wiki/Ext3 )

「inode あたり 32000 リンクという制限から、1 つのディレクトリあたり 31998 のサブディレクトリの制限があります。[13]」

そのため、それほど高くない 32k アップロードの制限に達すると、アプリケーションは失敗します。

于 2009-10-01T16:41:14.550 に答える
0

新しいファイル/ディレクトリが作成されるディレクトリ用に別のパーティションがある場合、それは問題ではないと思います。別のパーティションを使用すると問題が発生する可能性があります。これは、inode や空きディスク領域が不足する可能性があるためです。

別のパーティションを使用すると (DOS 攻撃の場合)、アプリケーションが正しく動作しなくなるだけで、システムが損傷を受けることはありません。

于 2009-10-01T11:24:38.680 に答える
0

そうではありませんが、1 つのディレクトリに膨大な数のフォルダー (またはファイルの場合も同じ) を配置することはお勧めしません (速度が大幅に低下します)。

理由: c スタイルの文字列

/path/to/usernamefirstletter/username/year/month/fileのようなものを階層的に(原文のまま?)保存することをお勧めします。

于 2009-10-01T11:26:04.653 に答える