Combien de fichiers puis-je avoir sur un seul répertoire?

21

Cette question est liée à celle-ci .

Je travaille avec l'animation, qui génère BEAUCOUP de fichiers (+/- 1 000 000) généralement stockés sur un seul répertoire. Sur Mac Os X, certains bogues ont généré plus de +/- 30 000 fichiers, j'ai donc l'habitude de diviser l'animation en différents répertoires.

Sur Ubuntu, y a-t-il une limite au nombre de fichiers qu'un seul répertoire peut contenir?

H_7
la source

Réponses:

32

Ubuntu ne limite pas la taille d'un répertoire, il est imposé par le système de fichiers. Chaque fichier et répertoire est un soi-disant inode. Vous pouvez utiliser df -ipour vérifier le nombre d'inodes utilisés et disponibles pour tous les systèmes de fichiers montés.

Je viens de créer 1 million et un fichier sans problème car ma limite d'inode pour ma partition domestique ext4 de 50 Go (46 Gio) est suffisamment grande.

J'ai utilisé l'expansion du shell pour créer les fichiers, combinée avec l' touchutilitaire:

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

Cela crée 1000001 fichiers qui peuvent être vérifiés avec ls | wc -l. Pourquoi 300000..600000et non 300001..600000? Parce que j'étais trop paresseux pour mettre ce 1 à la fin.

df -i ressemble à:

/dev/sda6            3055616 1133635 1921981   38% /home

Maintenant, supprimez les fichiers de test (a cd ..&&rm -f testpris beaucoup plus de temps, donc utilisez-les rmavec les noms de fichiers):

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

et le nombre d'inodes en cours d'utilisation a diminué immédiatement après la suppression des fichiers:

/dev/sda6            3055616  133634 2921982    5% /home

Notez que même si le système de fichiers autorise un si grand nombre de fichiers, c'est une horrible idée de stocker de tels fichiers volumineux dans un seul répertoire. Utilisez au moins certains sous-répertoires avec une structure comme f/i/l/e/filename.ext. Les programmes n'attendent souvent pas de si grandes quantités de fichiers.

Lekensteyn
la source
1
ext4est un type de système de fichiers, pas une extension de fichier. Vous ne pouvez pas créer un répertoire pour mettre en file d'attente les modifications? Je doute que ces programmes puissent fonctionner correctement avec de si grandes quantités de fichiers.
Lekensteyn
1
Bien sûr que je peux. J'imagine juste des problèmes avant d'y arriver. Vous avez raison sur Adobe After Effects, ça va planter certainement, mais ne doutez pas des gars Autodesk, ils font des morceaux de code incroyables ... =) ressemble à l'utilisation d'une Ferrari. Très facile à planter, très rapide et puissant car bloqué au sol. J'espère que mon anglais a du sens.
H_7
1
Je comprends bien. Oui, exactement 17.000
points de
1
Avant de supprimer les fichiers, essayez d'ouvrir ce répertoire dans Nautilus et voyez ce qui se passe;).
Mario
1
@bzero Veuillez ouvrir une nouvelle question pour cela.
Lekensteyn