Quel est le nombre maximum de fichiers qu'un dossier Unix peut contenir?
Je pense que ce sera le même que le nombre de fichiers.
Quel est le nombre maximum de fichiers qu'un dossier Unix peut contenir?
Je pense que ce sera le même que le nombre de fichiers.
Réponses:
Varie selon le système de fichiers, http://en.wikipedia.org/wiki/Comparison_of_file_systems
Sur tous les systèmes de fichiers Unix actuels, un répertoire peut contenir un nombre pratiquement illimité de fichiers. Alors que "illimité" est limité par l'espace disque et les inodes - tout ce qui arrive en premier.
Avec les conceptions de systèmes de fichiers plus anciennes ( ext2 , UFS , HFS + ), les choses ont tendance à ralentir si vous avez plusieurs fichiers dans un répertoire. Habituellement, les choses commencent à devenir douloureuses autour de 10 000 fichiers. Avec les nouveaux systèmes de fichiers ( ReiserFS , XFS , ZFS , UFS2 ), vous pouvez avoir des millions de fichiers dans un répertoire sans voir les goulots d'étranglement des performances générales.
Mais avoir autant de fichiers dans un répertoire n'est pas bien testé et il y a beaucoup d'outils qui échouent. Par exemple, des scripts de maintenance du système périodiques peuvent y éclater.
J'ai heureusement utilisé un répertoire avec plusieurs millions de fichiers sur UFS2 et n'avais vu aucun problème jusqu'à ce que je veuille supprimer le répertoire - cela a pris plusieurs JOURS.
Cela dépend du nombre d' inodes avec lesquels le système de fichiers a été créé. Exécution
df -i
vous donnera le nombre d'inodes libres. Il s'agit de la limite pratique du nombre de fichiers qu'un système de fichiers et donc un répertoire peuvent contenir.
Je suppose que vous envisagez de stocker beaucoup de fichiers au même endroit, non?
La plupart des systèmes de fichiers Unix modernes peuvent placer un grand nombre de fichiers dans un seul répertoire, mais les opérations telles que suivre les chemins, lister les fichiers, etc. impliquent une recherche linéaire dans la liste des fichiers et ralentissent si la liste devient trop grande.
Je me souviens avoir entendu dire que quelques milliers, c'est trop pour la plupart des utilisations pratiques. La solution typique consiste à rompre le regroupement. C'est,
/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/
et stockez vos fichiers dans le sous-répertoire approprié en fonction de leur hachage basename
. Choisissez un hachage pratique, le premier caractère peut faire l'affaire simple.
Cristian Ciupitu écrit dans les commentaires que XFS , et éventuellement d'autres systèmes de fichiers très nouveaux, utilisent log(N)
des structures consultables pour contenir le contenu des répertoires, donc cette contrainte est grandement améliorée .
D'après le commentaire que vous avez laissé, je pense que vous ne vous souciez pas vraiment du nombre de fichiers / dossiers que votre FS peut héberger.
Vous devriez probablement envisager d'utiliser ModRewrite et de réécrire site.com/username sur site.com/?user= ou quelque chose du genre et stocker toutes vos données dans une base de données. La création d'un dossier par utilisateur n'est généralement pas nécessaire (et ce n'est pas une bonne idée).
Cela dit, chaque système de fichiers a des limites et df
peut vous dire combien d'inodes sont disponibles sur chaque partition de votre système.