17 votes

Combien de fichiers dans un dossier sont trop nombreux ?

Il y a plusieurs années, je me souviens vaguement que le Finder de Mac OS X commençait à avoir des problèmes lorsqu'un dossier contenait 2 000 à 3 000 éléments ou plus.

Document sur les pommes dit que le HFS Plus a une limite théorique de 2 milliards de fichiers par dossier, toutes versions de Mac OS X confondues.

Quelle est la limite pratique ?

Le fait d'avoir 10 000 photos dans un dossier posera-t-il un problème ?

9voto

nohillside Points 82672

Vous pouvez facilement l'essayer vous-même en exécutant la commande suivante dans Terminal

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

pour créer un dossier contenant 10'000 fichiers de 16kB chacun (remplacez le 16 de la troisième ligne par un autre nombre pour des fichiers de taille différente).

7voto

Jared Palmer Points 66

Il semble qu'environ 10 000 soit un chiffre sûr. Cependant, j'ai constaté que si vous allez beaucoup plus haut, comme 50 000, Finder ne listera même pas les fichiers dans le répertoire lorsque vous essayez de le parcourir. Je pense que c'est la raison pour laquelle de nombreux logiciels de récupération de données créent un nouveau dossier tous les 10 000 fichiers si vous découpez des fichiers en RAW.

5voto

Imran Hameed Points 1

Répondre en considérant un exemple pratique : J'ai maintenant 326.000 fichiers dans un dossier, créé par une application qui télécharge des bits depuis un serveur. Les fichiers sont des fichiers XML zippés, et mon application en extrait les données XML et les stocke dans une base de données locale.

L'application fonctionne à partir de la ligne de commande. Tout fonctionne bien sans aucun problème mais rm * o ls * ne fonctionne pas en raison de l'expansion du caractère générique (message d'erreur Argument list too long ). Comme les fichiers sont stockés dans un dossier temporaire, je peux simplement supprimer ce dossier après avoir traité les fichiers.

Je n'ai pas essayé d'ouvrir le dossier avec le Finder, cependant. Je pense que cela pourrait être très lent, voire impossible.

4voto

Tatjana Heuser Points 416

Il y a plusieurs limites à prendre en compte, qui ont été évoquées dans certains commentaires :

  • longueur de l'argument et expansion de la coquille - un simple echo * se sauvera si la longueur concaténée des noms de fichiers sur lesquels l'astérisque se développe atteint cette limite. Si vous tombez sur ce piège, souvent find sera votre ami. find . -depth 1 -type f | exec echo {} \; serait un remplacement fonctionnel de l'innocent echo * mentionné ci-dessus, limité aux fichiers de listage uniquement. ( echo à remplacer par l'action de votre choix)

  • des limites par programme à la taille des structures de données internes utilisées pour contenir le contenu des répertoires (finder, toutes sortes d'outils essayant de lire les listes de répertoires).

  • taille du cache de consultation des répertoires. Bien que le système de fichiers puisse être capable pour contenir 2,1 milliards de fichiers dans la structure sur disque d'un répertoire, il ne sera pas agréable de travailler avec ce nombre, et vous serez bien avisé d'introduire une stratégie de tri des fichiers dans des sous-répertoires si vous avez affaire à des structures de cette taille. (Indice : les personnes qui conçoivent les structures de mise en cache sur le web ont dû faire face à ce problème - cf. Maltzahn/Richardson, Reducing the Disk I/O of Web Proxy Server Caches, Usenix 1999. .

Pour accélérer l'accès aux structures de disque fréquemment utilisées, les systèmes de fichiers utilisent des caches (de mémoire), et la taille de ces caches est limitée. C'est là que la pénalité soudaine pour les répertoires structurés de grande taille et moins qu'optimaux commence à se faire sentir. En fonction de la fréquence et de l'intensité des accès à ces répertoires, la pénalité peut être significative.

L'article de 2015 de Tsai et al., How to get more value from your file system directory cache (Comment tirer le meilleur parti du cache de votre système de fichiers) serait probablement l'une des introductions les plus faciles au sujet.

3voto

konqui Points 876

Apple a un document de soutien à ce sujet :

Nombre maximal de fichiers (ou de fichiers et de dossiers) dans un dossier (toutes les versions de Mac OS X)

Jusqu'à 2,1 milliards (2)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X