O que determina um tamanho de diretório?


10

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

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 devido à restrição de tamanho de bloco.

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


1
Para uma leitura mais aprofundada, isso é bastante informativo: askubuntu.com/a/404716/380067
kos

3
Não se trata apenas do número de entradas no diretório, mas também do tamanho de seus nomes.
kasperd

Respostas:


13

O sistema de arquivos usado e o número máximo de entidades nesse diretório a qualquer momento determinam o tamanho. Depois que 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. Portanto, se, a certa altura, um diretório tiver 10 milhões de entidades, ele permanecerá do mesmo tamanho se 9.999.999 deles forem excluídos. Isso leva a situações interessantes, como neste post sobre Unix e 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 ext{2,3,4}sistemas de arquivos são afetados. NTFS é, em menor grau. tmpfse btrfs não são. O ZFS é bastante conservador, obtive uma saída 2para o segundo statcomando.

Palavras-chave:


Ótimo! Eu ainda estava me perguntando como isso poderia ser.
kos

O XFS não é afetado! deve adicionar
Edward Torvalds
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.