Qual è il numero massimo di file che può contenere una cartella Unix?
Penso che sarà lo stesso del numero di file.
Qual è il numero massimo di file che può contenere una cartella Unix?
Penso che sarà lo stesso del numero di file.
Risposte:
Varia per file system, http://en.wikipedia.org/wiki/Comparison_of_file_systems
Su tutti gli attuali filesystem Unix una directory può contenere un numero praticamente illimitato di file. Considerando che "illimitato" è limitato da spazio su disco e inode - qualunque cosa si esaurisca per prima.
Con i vecchi progetti di file system ( ext2 , UFS , HFS + ) le cose tendono a rallentare se si hanno molti file in una directory. Di solito le cose iniziano a diventare dolorose intorno a 10.000 file. Con i filesystem più recenti ( ReiserFS , XFS , ZFS , UFS2 ) puoi avere milioni di file in una directory senza vedere colli di bottiglia delle prestazioni generali.
Ma avere così tanti file in una directory non è ben testato e ci sono molti strumenti che falliscono. Ad esempio, gli script di manutenzione periodica del sistema potrebbero non funzionare.
Ho usato felicemente una directory con diversi milioni di file su UFS2 e non avevo riscontrato alcun problema fino a quando non volevo eliminare la directory, il che ha richiesto diversi GIORNI.
Dipende da quanti inode è stato creato il filesystem. Esecuzione
df -i
ti darà il numero di inode gratuiti. Questo è il limite pratico di quanti file può contenere un filesystem e quindi una directory.
Suppongo che stai pensando di archiviare molti file in un unico posto, no?
La maggior parte dei moderni file system Unix può mettere molti file in una directory, ma operazioni come seguire percorsi, elencare file, ecc. Implicano una ricerca lineare attraverso l'elenco dei file e rallentare se l'elenco diventa troppo grande.
Mi sembra di ricordare di aver sentito che un paio di migliaia sono troppe per la maggior parte degli usi pratici. La soluzione tipica è quella di interrompere il raggruppamento. Questo è,
/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/
e archiviare i file nella sottodirectory appropriata secondo un loro hash basename
. Scegli un hash conveniente, il primo personaggio potrebbe fare per casi semplici.
Cristian Ciupitu scrive nei commenti che XFS , e forse altri nuovissimi filesystem, usano log(N)
strutture ricercabili per contenere i contenuti delle directory, quindi questo vincolo è notevolmente migliorato .
Dal commento che hai lasciato, penso che non ti interessi davvero di quanti file / cartelle può ospitare il tuo FS.
Probabilmente dovresti considerare l'uso di ModRewrite e riscrivere site.com/username su site.com/?user= o qualcosa del genere e archiviare tutti i tuoi dati in un database. La creazione di una cartella per utente non è generalmente necessaria (e non è una buona idea).
Detto questo, ogni filesystem ha dei limiti e df
può dirti quanti inode sono disponibili su ogni partizione del tuo sistema.