Eu tenho uma pasta de 10M. Cada pasta contém 13 arquivos.
Todas essas pastas eu gostaria de colocar em uma pasta principal (raiz).
Existe alguma limitação no Windows Server para isso?
Eu tenho uma pasta de 10M. Cada pasta contém 13 arquivos.
Todas essas pastas eu gostaria de colocar em uma pasta principal (raiz).
Existe alguma limitação no Windows Server para isso?
Isso pode ser um problema X/Y . Talvez o que você esteja fazendo seja mais adequado para um banco de dados do que para um sistema de arquivos. Com um banco de dados, você pode armazenar e acessar facilmente muitos milhões de registros de forma rápida e eficiente. A resposta aceita está correta ao dizer que o NTFS é teoricamente capaz de armazenar tantos registros, mas não será muito rápido. Isso é verdade para essencialmente todos os sistemas de arquivos (por exemplo, NTFS, exFAT, ext4, HFS...). Eles simplesmente não são projetados para serem suficientemente escaláveis para o que você está tentando fazer.
Uma das principais razões para isso é que a API do sistema de arquivos da maioria dos sistemas operacionais só pode retornar a lista inteira de entradas de diretório de uma só vez. Não há como recuperar apenas diretórios que correspondam a um determinado padrão em sistemas de arquivos típicos, por exemplo. Ele teria que recuperá-los todos e , em seguida, analisar a saída (maciça) para os nomes que você deseja. O mesmo acontece com outros atributos de arquivo/diretório além de nome como tamanho, tempo de criação e modificação, etc. Este não é o caso de bancos de dados.
No que diz respeito às capacidades teóricas do NTFS, não há problema.
O artigo da Microsoft sobre tamanhos máximos em um volume NTFS especifica que o máximo de arquivos por volume é 4.294.967.295, e esse também deve ser o máximo em pastas. No entanto, você precisaria de um computador extremamente rápido com muita RAM para poder visualizar essa pasta no Explorer.
Pela minha própria experiência, em um bom computador de vários anos atrás, visualizar uma pasta com milhares de subpastas levou algumas dezenas de segundos apenas para mostrar a pasta. Não faço ideia do que aconteceria com 10 milhões de subpastas, mas certamente você precisaria de muita paciência, mesmo que o computador pudesse lidar com isso. Eventualmente.
Eu realmente sugiro repensar novamente sua arquitetura de pastas.
O número de arquivos dentro de uma pasta não tem nada a ver com o sistema operacional . É um recurso do sistema de arquivos, embora o sistema que você usa, por sua vez, tenha limitações menores. Alguns sistemas de arquivos limitam o número de arquivos em uma pasta, mas outros apenas limitam o número total de arquivos em um volume, e alguns não têm nenhum limite. Veja os limites dos sistemas de arquivos . Observe que basicamente um diretório é apenas um arquivo cujo conteúdo é uma lista de outros arquivos
Se você usar exFAT , o número máximo é de 2.796.202 arquivos por pasta . Em NTFS , o limite é de 2 32 -1 arquivos por volume. E se você usa FAT , o limite depende da versão FAT
O Windows também oferece suporte nativo a alguns outros sistemas de arquivos, como o ReFS, ou você pode instalar drivers para outros sistemas de arquivos não nativos. Eles podem, por sua vez, ter limites diferentes
Mas, em qualquer caso, ter um grande número de arquivos em uma pasta é uma péssima idéia . A listagem e a velocidade de operação dependem de como o sistema de arquivos armazena seus metadados, por exemplo, em FAT é uma lista linear, portanto é muito lenta. Mas mesmo com uma maneira eficiente de listar arquivos como uma árvore B+ em NTFS, ainda é lento. Em geral evito ter mais de 2000 arquivos em uma pasta
A melhor solução no seu caso deve ser algum tipo de banco de dados . No entanto, se você realmente precisar armazenar os arquivos diretamente em uma unidade, precisará distribuí-los uniformemente em várias pastas menores . A maneira comum é fazer um hash do nome ou conteúdo do arquivo e dividir em pastas com parte desse nome. Por exemplo, se o hash for
0xabcdef12
(32 bits), armazene o arquivo emab/cd/ef/12
,ab/cde/f12
ou2af/0de/f12
(cada componente de caminho representa 8/8/8/8, 8/12/12 e 10/10/12 bits do valor original, respectivamente). Desta forma, nenhuma pasta deve ter muitos ou poucos arquivos. VerEste método é comumente usado em git ou docker
Veja também