フォルダー内のファイルが多すぎますか?[閉まっている]


9

何年も前に、フォルダに2,000〜3,000個以上のアイテムが含まれていると、Mac OS XのFinderで問題が発生することを漠然と思い出します。

Appleのドキュメントによると、HFS Plusファイルシステムには、すべてのMac OS Xバージョンで、フォルダーあたり20億ファイルという理論上の制限があります。

実用的な制限は何ですか?

フォルダーに10,000枚の写真があると問題になりますか?


2
10.6では、私はまだ職場で使用しています。2000-3000の問題はまだ存在しています。この種の大量のファイルを後のバージョンで使用する機会はありませんでした。しかし、ドキュメントがまだ同じことを言っている場合、同じ制限が問題になる可能性があります。ローカルドライブで2000-3000の問題が発生したことは一度もないことを付け加えます。ただし、ネットワークドライブ経由のみです。
マークハンテ

1
制限がどこにあるのか正確にはわかりませんが、何百万ものファイルが間違いなくあなたを非常に大きな問題に陥らせます(幸運にも、そのようなフォルダを削除するのは幸運rm -rfです)。
オハドシュナイダー

macOS X 10.6の初期のバージョンでは、デスクトップフォルダに「2k〜3k」の大量のファイルを配置すると、少なくともパフォーマンスの問題が発生しました。デスクトップにすべてのアイコンを描くことと関係がある。他のフォルダの問題について聞いたことがありません。
historystamp

これを保留にします。さらに回答が必要な場合は、どのようなタイミング/要件が待機を「実用的」にするのかを説明します-10,000個のファイルを作成する場合の答えは、ほとんどのシステムで忍耐が不足してFinderでファイルを見る前にシステムの速度が低下するか、ファイルを処理できません。
bmike

@bmike HFS +に代わる新しいApple File System(APFS)がこのトピックに新しいスピンをかけることを除いて、私はあなたに同意します。おそらく、まだ存在しない場合は特にAPFSに新しい質問を投稿する必要がありますか?
バジル

回答:


3

およそ10,000が安全であるようです。しかし、50,000をはるかに超える場合、Finderはディレクトリをブラウズしようとしてもディレクトリ内のファイルをリストしません。これが、RAWでファイルカービングを行う場合、多くのデータ回復ソフトウェアが10,000ファイルごとに新しいフォルダーを作成する理由だと思います。


7

ターミナルで次のコマンドを実行すると、簡単に自分で試すことができます

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を異なるサイズのファイルの別の番号に置き換えます)。


1
注意の遅れ:ローカルシステム管理者との名声を高めたい場合を除き、ホームディレクトリ内でそれを行わないでください。選択したバックアップツールによっては、貴重な実験をアーカイブしようとするツールの効果が気に入らない場合があります。このような実験は、バックアップ計画の一部ではないメディアに最も制限されています。/tmpは、よりも良い選択です~/
Tatjana Heuser

@TatjanaHeuserないこのトピックにご関心が必ずどこから来るが、MacOSで、ユーザーは一般的である(彼らはそれを認識していない可能性も)ローカルの管理者は、と/tmpシンボリックリンクであると/private/tmp、デフォルトではメイン(のみ)パーティション上に存在します。
nohillside

デスクトップMacの場合-バックアップの問題は変わりません。MacOSでも、/tmp再起動の間にクリアされます。(とは異なります/var/tmp)。#alt.follkore.computersは別lseekとして、バックアップ用のテープの数がバックアップされるファイルシステムの容量を超えたときに試してみるために、大きな穴のある小さなファイルを作成した好奇心の強いユーザーを呪う管理者を知っています...
タッジャナホイザー

@TatjanaHeuser写真旅行から戻ってきて、それぞれ30〜40 GBの何百ものRAWファイルをMacにアップロードしました。TimeMachineはそれをまったく問題なく処理しました:-)
nohillside

3

実用的な例を考慮して答えます:サーバーからビットをダウンロードするアプリケーションによって作成されたフォルダーに326.000個のファイルがあります。ファイルは圧縮されたXMLファイルであり、私のアプリケーションはXMLデータを抽出し、ローカルデータベースに保存します。

アプリケーションはコマンドラインから実行されます。すべてはどんな問題なく正常に動作しますが、 rm *またはls *ワイルドカード(エラーメッセージの膨張による動作しませんArgument list too long)。ファイルは一時フォルダーに保存されるため、ファイルを処理した後、フォルダーを削除するだけです。

ただし、Finderでフォルダを開こうとしませんでした。可能であれば、非常に遅いかもしれません。


1
ここでの同じ使用例-アーカイブしているサイトから290,000を超えるファイルをディレクトリにダウンロードしましたが、それをFinderで開こうとするミスを犯しました。20分間ほど回転させた後、Finderを強制的に再起動し、そのフォルダーを閉じて、ターミナルで他のすべてを行いました(たくさんfind | xargs!)
geerlingguy

3

いくつかのコメントで触れられている考慮すべきいくつかの制限があります。

  • 引数の長さとシェルの展開- 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つでしょう。


2

Appleには、それに関連するサポートドキュメントがあります

フォルダー内のファイル(またはファイルとフォルダー)の最大数(すべてのMac OS Xバージョン)

最大21億(2)


はい、確かに、質問にそのリンクと事実を含めました(2番目の段落)。私は現実的な現実の制限について尋ねています。
バジルブルク

2
このおかげで、私は大笑いしました。4Mファイルを1つのフォルダーに入れて、それがどのようになるか教えてください(ヒント-表示できないls、表示できない、表示できないfind、削除できないなど)。
オハドシュナイダー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.