1つのディレクトリにいくつのファイルを保存できますか?


21

この質問はこれに関連しています。

私は通常、単一のディレクトリに格納されている多くのファイル(+/- 1,000,000)を生成するアニメーションを使用しています。Mac Os Xでは、いくつかのバグが+/- 30,000以上のファイルで発生したため、アニメーションをさまざまなディレクトリに分割していました。

Ubuntuでは、1つのディレクトリが保持できるファイルの数に制限はありますか?

回答:


32

Ubuntuはディレクトリのサイズを制限しません。ファイルシステムによって課されます。各ファイルとディレクトリは、いわゆるiノードです。使用df -iして、すべてのマウントされたファイルシステムで使用可能なiノードの数を確認するために使用できます。

50 GB(46 GiB)のext4ホームパーティションのiノード制限が十分に大きいため、問題なく100万と1つのファイルを作成しました。

ファイルを作成するために、touchユーティリティと組み合わせてシェル拡張を使用しました。

mkdir test
cd test
touch {0..300000}
touch {300000..600000}
touch {600000..900000}
touch {900000..1000000}

これにより、1000001ファイルが作成されls | wc -lます。このファイルはで確認できます。なぜ300000..600000ありませんか300001..600000?私はその1を最後に置くのが面倒だったからです。

df -i 次のようになります。

/dev/sda6            3055616 1133635 1921981   38% /home

テストファイルを削除します(cd ..&&rm -f testはるかに時間がかかったためrm、ファイル名と共に使用します)。

rm {0..300000}
rm {300000..600000}
rm {600000..900000}
rm {900000..1000000}
cd ..
rmdir f

また、使用中のiノードの数は、ファイルを削除した直後に減少しました。

/dev/sda6            3055616  133634 2921982    5% /home

ファイルシステムがそのような多数のファイルを許可している場合でも、そのような大きなファイルを単一のディレクトリに保存するのは恐ろしい考えです。少なくとものような構造を持ついくつかのサブディレクトリを使用しますf/i/l/e/filename.ext。多くの場合、プログラムはこのような大量のファイルを予期していません。


1
ext4ファイルシステムの種類であり、ファイル拡張子ではありません。編集をキューに入れるためのディレクトリを作成できませんか?これらのプログラムは、このような大量のファイルでうまく実行できるとは思いません。
-Lekensteyn

1
もちろん出来るよ。私はそれらに到達する前に問題を想像しています。Adobe After Effectsについては正しいです。確かにクラッシュしますが、Autodeskの人たちを疑わないでください。彼らは素晴らしいコードを作成します... =)フェラーリを使用しているように見えます。地面でブロックされているため、非常に簡単にクラッシュし、非常に高速で強力です。私の英語が理にかなっていることを願っています。
H_7

1
了解した。
イェー

1
ファイルを削除する前に、Nautilusでこのディレクトリを開いてみて、何が起こるかを確認してください;)。
マリオ

1
@bzeroそのための新しい質問を開いてください。
Lekensteyn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.