O que determina um tamanho de diretório?

10

Eu sei que o tamanho de um diretório em si é diferente do tamanho dos arquivos nele contidos.

Eu penso em um diretório como uma lista dos diretórios e arquivos dentro, portanto o tamanho de um diretório deve estar relacionado ao número de arquivos / diretórios dentro, com um mínimo de 4096 bytes por causa da restrição de tamanho de bloco. p>

Mas no meu sistema, eu tenho muitos diretórios bem preenchidos com 4096 bytes, e alguns diretórios que são consideravelmente menos populosos que são em torno de 10 megabytes. Você pode me explicar por que isso acontece?

    
por Macond 26.12.2015 / 10:39

1 resposta

13

O sistema de arquivos usado e o número máximo de entidades nesse diretório a qualquer momento determinam o tamanho. Quando o tamanho padrão reservado para o diretório estiver esgotado, mais espaço será alocado para o diretório. No entanto, quando o número de entidades diminui, o espaço alocado não é liberado automaticamente. Então, se, em um ponto, um diretório tiver 10 milhões de entidades, ele permaneceria do mesmo tamanho se 9.999.999 deles fossem excluídos. Isso leva a situações interessantes, como em este Unix & amp; Postagem no Linux .

$ mkdir foo; touch foo/{1..100000}; stat -c %s foo
2179072
$ rm foo/*; stat -c %s foo
2179072

Isso não é necessariamente válido para outros sistemas de arquivos. Os sistemas de arquivos ext{2,3,4} são afetados. O NTFS é, em menor grau. tmpfs e btrfs não são. O ZFS é bastante conservador, recebi uma saída de 2 para o segundo comando stat .

Relacionados:

por muru 26.12.2015 / 11:07

Tags