何年も前に、フォルダに2,000〜3,000個以上のアイテムが含まれていると、Mac OS XのFinderで問題が発生することを漠然と思い出します。
Appleのドキュメントによると、HFS Plusファイルシステムには、すべてのMac OS Xバージョンで、フォルダーあたり20億ファイルという理論上の制限があります。
実用的な制限は何ですか?
フォルダーに10,000枚の写真があると問題になりますか?
rm -rf
です)。
何年も前に、フォルダに2,000〜3,000個以上のアイテムが含まれていると、Mac OS XのFinderで問題が発生することを漠然と思い出します。
Appleのドキュメントによると、HFS Plusファイルシステムには、すべてのMac OS Xバージョンで、フォルダーあたり20億ファイルという理論上の制限があります。
実用的な制限は何ですか?
フォルダーに10,000枚の写真があると問題になりますか?
rm -rf
です)。
回答:
およそ10,000が安全であるようです。しかし、50,000をはるかに超える場合、Finderはディレクトリをブラウズしようとしてもディレクトリ内のファイルをリストしません。これが、RAWでファイルカービングを行う場合、多くのデータ回復ソフトウェアが10,000ファイルごとに新しいフォルダーを作成する理由だと思います。
ターミナルで次のコマンドを実行すると、簡単に自分で試すことができます
mkdir ~/t
cd ~/t
dd if=/dev/random of=test bs=1024 count=16
for i in {1..10000}; do cp test test.$i; done
それぞれ16kBの10'000ファイルを含むフォルダーを作成します(3行目の16を異なるサイズのファイルの別の番号に置き換えます)。
/tmp
は、よりも良い選択です~/
。
/tmp
シンボリックリンクであると/private/tmp
、デフォルトではメイン(のみ)パーティション上に存在します。
/tmp
再起動の間にクリアされます。(とは異なります/var/tmp
)。#alt.follkore.computersは別lseek
として、バックアップ用のテープの数がバックアップされるファイルシステムの容量を超えたときに試してみるために、大きな穴のある小さなファイルを作成した好奇心の強いユーザーを呪う管理者を知っています...
実用的な例を考慮して答えます:サーバーからビットをダウンロードするアプリケーションによって作成されたフォルダーに326.000個のファイルがあります。ファイルは圧縮されたXMLファイルであり、私のアプリケーションはXMLデータを抽出し、ローカルデータベースに保存します。
アプリケーションはコマンドラインから実行されます。すべてはどんな問題なく正常に動作しますが、 rm *
またはls *
ワイルドカード(エラーメッセージの膨張による動作しませんArgument list too long
)。ファイルは一時フォルダーに保存されるため、ファイルを処理した後、フォルダーを削除するだけです。
ただし、Finderでフォルダを開こうとしませんでした。可能であれば、非常に遅いかもしれません。
find | xargs
!)
いくつかのコメントで触れられている考慮すべきいくつかの制限があります。
引数の長さとシェルの展開- echo *
アスタリスクが連結されたファイル名の長さがその制限に達すると展開される場合、単純なものは保釈されます。このスネアに出会ったら、しばしばfind
あなたの友達になります。
find . -depth 1 -type f | exec echo {} \;
これは、echo *
ファイルのリストのみに限定された、上記の無実の代わりとなる実用的な代替品です。(echo
選択したアクションに置き換えられます)
ディレクトリの内容を保持するために使用される内部データ構造のサイズに対するプログラムごとの制限(ファインダー、ディレクトリ一覧を読み取ろうとするあらゆる種類のツール)。
ディレクトリ検索キャッシュサイズ。ファイルシステムはディレクトリのオンディスク構造内に21億個のファイルを保持できる場合がありますが、その数を使用するのは気分が悪くなります。ファイルをサブディレクトリにソートする戦略を導入することをお勧めします。そのサイズの構造を扱っています。(ヒント:Webキャッシング構造を設計する人々はそれに対処しなければなりませんでした-Maltzahn / Richardson、Reduce the Disk I / O of Web Proxy Server Caches、Usenix 1999を参照してください。
頻繁に使用されるディスク構造へのアクセスを高速化するために、ファイルシステムは(メモリ)キャッシュを使用しており、これらのキャッシュのサイズは制限されています。これは、大きくて最適ではない構造化されたディレクトリの突然のペナルティがヒットし始めるところです。これらのディレクトリへのアクセスの頻度と強度に応じて、ペナルティは大きくなります。
Tsai et al。による2015年の記事「ファイルシステムのディレクトリキャッシュからより多くの価値を得る方法」は、おそらくこの主題の簡単な紹介の1つでしょう。
Appleには、それに関連するサポートドキュメントがあります。
フォルダー内のファイル(またはファイルとフォルダー)の最大数(すべてのMac OS Xバージョン)
最大21億(2)
ls
、表示できない、表示できないfind
、削除できないなど)。