Qual é o número máximo de arquivos que uma pasta Unix pode conter?
Eu acho que será o mesmo que o número de arquivos.
Qual é o número máximo de arquivos que uma pasta Unix pode conter?
Eu acho que será o mesmo que o número de arquivos.
Respostas:
Varia de acordo com o sistema de arquivos, http://en.wikipedia.org/wiki/Comparison_of_file_systems
Em todos os sistemas de arquivos Unix atuais, um diretório pode conter um número praticamente ilimitado de arquivos. Enquanto "ilimitado" é limitado por espaço em disco e inodes - o que ocorrer primeiro.
Nos projetos mais antigos de sistemas de arquivos ( ext2 , UFS , HFS + ), as coisas tendem a ficar lentas se você tiver muitos arquivos em um diretório. Geralmente, as coisas começam a ficar dolorosas em torno de 10.000 arquivos. Com sistemas de arquivos mais recentes ( ReiserFS , XFS , ZFS , UFS2 ), você pode ter milhões de arquivos em um diretório sem ver gargalos de desempenho geral.
Mas ter tantos arquivos em um diretório não é bem testado e há muitas ferramentas que não são bem assim. Por exemplo, scripts de manutenção periódica do sistema podem vomitá-lo.
Felizmente, usei um diretório com vários milhões de arquivos no UFS2 e não havia problemas até querer excluir o diretório - isso levou vários dias.
Depende de quantos inodes o sistema de arquivos foi criado. Executando
df -i
lhe dará o número de inodes livres. Esse é o limite prático de quantos arquivos um sistema de arquivos e, portanto, um diretório podem conter.
Presumo que você esteja pensando em armazenar muitos arquivos em um só lugar, não?
A maioria dos sistemas de arquivos Unix modernos pode colocar muitos arquivos em um diretório, mas operações como seguir caminhos, listar arquivos etc. envolvem uma pesquisa linear na lista de arquivos e ficam lentas se a lista crescer muito.
Lembro-me de ouvir que alguns milhares são demais para os usos mais práticos. A solução típica é dividir o agrupamento. Isso é,
/some/path/to/dir/a/
/some/path/to/dir/b/
...
/some/path/to/dir/z/
e armazene seus arquivos no subdiretório apropriado de acordo com um hash deles basename
. Escolha um hash conveniente, o primeiro caractere pode ser usado para casos simples.
Cristian Ciupitu escreve nos comentários que o XFS e, possivelmente, outros sistemas de arquivos muito novos, usam log(N)
estruturas pesquisáveis para manter o conteúdo do diretório, portanto essa restrição é bastante melhorada .
Pelo comentário que você deixou, acho que você realmente não se importa com quantos arquivos / pastas seu FS pode hospedar.
Você provavelmente deve considerar usar o ModRewrite e reescrever site.com/username para site.com/?user= ou algo do tipo e armazenar todos os seus dados em um banco de dados. Criar uma pasta por usuário geralmente não é necessário (e não é uma boa ideia).
Dito isto, cada sistema de arquivos tem limites e df
pode dizer quantos inodes estão disponíveis em cada partição do seu sistema.