2

Linuxの32,000サブディレクトリの制限に達しました。それは私のPHPスクリプトに問題を引き起こしました、そして私はそれが二度と起こらないようにしたいです。

簡単な解決策は、別のサブディレクトリを作成する前に、PHPスクリプトで現在のサブディレクトリ数を確認することです。

このようなチェックを実行するために私が見たすべてのアイデアには、ディレクトリ全体を反復処理し、すべてのフォルダをカウントすることが含まれます。私の懸念が非常に大きなディレクトリにあることを考えると、そこに含まれるファイル/フォルダの数を取得するためのより良い方法はありますか?

ボーナスの質問:ディレクトリのディスク使用量を見つけるための非反復的な方法もありますか?

前もって感謝します!ブライアン

4

1 に答える 1

4

より良い方法は、1 つのディレクトリに 32000 個のファイルが存在しないようにディレクトリ レイアウトを設計することです。実際、ディレクトリ内のファイルが 1000 であっても多すぎることをお勧めします。

この問題に対して私が通常とるアプローチには、余分なレベルのディレクトリ階層が含まれます。典型的な方法は、現在単一のディレクトリに保存しているファイル名を取得し、ネストされたディレクトリに対応する断片に分割することです。したがって、次のようなファイルがたくさんある場合

xyzzy
foo
bar
blah

あなたは実際にそれらを次のように保存するかもしれません

x/xyzzy
f/foo
b/bar
b/blah

等々。このアプローチの深さと幅をトレードオフするために、これを複数のディレクトリ レベルに拡張するか、複数の文字を使用してサブディレクトリを分割することができます。

おそらく、32k ファイル制限のないファイル システムを使用するよう提案されるでしょう。個人的には、このようなファイル システムであっても、ここで提案しているようなスキームを常に使用します。非常に多数のファイルを含むディレクトリでコマンドライン ツールを効果的に使用することはほとんど不可能であり (ls完全に扱いにくくなる場合さえあります)、この種の手動調査は、開発、デバッグ中、および通常の操作中に時々必要になります。 .

于 2009-08-28T06:20:18.553 に答える