Linux/UNIX 上の Web アプリケーションで、ファイルをアップロードするたびにディレクトリを作成するのは問題ですか?
-
19-09-2019 - |
質問
Webアプリケーション(unix/linuxで実行)のファイルアップロードを行っています。ファイルをアップロードするたびに新しいディレクトリを作成することを計画している場合に、懸念があるかどうか疑問に思っています。これは、Ruby on Rails プラグイン「paperclip」のすぐに使えるアプローチです。Linux/UNIX 環境にデプロイする場合、トレードオフは何なのか、あるいはおそらくそれは問題ではないのかについて議論しています。
オプションは次のようになります。
- 添付ファイルごとに 1 つのフォルダー - ペーパークリップが箱から出してどのように動作するかによる
- おそらくユーザーごとに 1 つのフォルダー (つまり、Web サービスに独自のアカウントを持つ複数のユーザーがいる場合) - ファイル名 (おそらくモデル ID) に一意性を追加する必要があります。
- すべての添付ファイルを 1 つのフォルダーに入れます - しかし、これはおそらく行き過ぎです
質問 - 作成されるディレクトリの数を気にする必要がありますか?サービスが人気がある場合、これは O/S の問題でしょうか?ユーザーが独自のアカウントでファイルをアップロードできるようにしていた Web サイトに対して、ファイルの保存に関してどのような構造が適していると考えられるか、アドバイスはありますか?(mysql にファイルを保存するという概念を無視したと思います。)
ありがとう
解決
Linuxでext3のフォーマットされたドライブ(最も一般的)を仮定します。
( http://en.wikipedia.org/wiki/Ext3する)からP>
「iノード当たり32000個のリンクの限界に起因する一つのディレクトリあたり31998サブディレクトリの限界がある。[13]」
あなたはその高くない32Kのアップロードの限界に達します場合は、だから、あなたのアプリケーションが失敗します。
他のヒント
など、しかし、1つのディレクトリ(またはファイルに同じ)にフォルダのgazillionsを持つものとして(それは速度に本当のヒットだ)推奨されていないわけではありません。
理由:Cスタイルの文字列
良い解決策はhierchiallyことであろうような店のものの何か(SIC?): /パス/ / usernamefirstletter /ユーザー名/年/月/ファイルへ
、私はそれは問題ではないと思います。あなたが悪いことができ、iノードおよび/またはディスクの空き容量が不足することができますので、あなただけの別のパーティションを使用する場合は、問題を取得することができます。
(DOS攻撃の場合)のみ正しく動作し、アプリケーションを停止すると、システムがどのような方法でけがを得ることはありません別のパーティションを使用します。