
Executei isso na minha instância do CentOS 7.3.
[user01@ ~]$ rm -rf my-very-own-directory/
[user01@ ~]$ mkdir my-very-own-directory/
[user01@ ~]$ stat my-very-own-directory/ | grep "Size"
Size: 6 Blocks: 0 IO Block: 4096 directory
[user01@ ~]$ mkdir my-very-own-directory/00
[user01@ ~]$ stat my-very-own-directory/ | grep "Size"
Size: 16 Blocks: 0 IO Block: 4096 directory
[user01@ ~]$ date > my-very-own-directory/date.txt
[user01@ ~]$ stat my-very-own-directory/ | grep "Size"
Size: 32 Blocks: 0 IO Block: 4096 directory
[user01@ ~]$ echo "content" > my-very-own-directory/content
[user01@ ~]$ stat my-very-own-directory/ | grep "Size"
Size: 47 Blocks: 0 IO Block: 4096 directory
- Criação inicial => tamanho = 6
- Adicione uma entrada com 2 bytes no comprimento do nome => o tamanho é 16 (6 + 8 + 2)
- Adicione outra entrada com 4 bytes de comprimento de nome => o tamanho é 32 (16 + 8 + 8)
- Adicione outra entrada com 7 bytes de comprimento de nome => o tamanho é 47 (32 + 8 + 7)
2 perguntas:
- Um diretório criado tem tamanho 6. Por quê?
- Cada nova entrada no diretório, seja um arquivo de um subdiretório, aumentará o tamanho de 'meu-próprio-diretório'. A questão é: o tamanho aumenta em 8 + (comprimento do nome do arquivo/nome do diretório). Por que 8?
Responder1
O formato do diretório depende inteiramente do sistema de arquivos.
No mínimo, uma entrada de diretório deve conter o nome do arquivo e um número de inode.
Para usar oext4
Sistema de arquivos Linux(e versões mais antigas), por exemplo, a entrada do diretório original tinha o número do inode (4 bytes), o comprimento do nome do arquivo (2 bytes) e o comprimento total da entrada (2 bytes), além do próprio nome do arquivo. (IIRC, o comprimento total é especificado explicitamente para permitir preenchimento e tal.)
As versões atuais (de ext3
) também suportam armazenamento do tipo árvore, que permite pesquisas mais rápidas em diretórios com grande número de arquivos, mas é claro que possui um formato mais complicado.
Embora ativado ext4
, o tamanho de um diretório é mostrado apenas como um múltiplo do tamanho do bloco, ou seja, um diretório vazio tem tamanho 4096
e não aumenta até que arquivos suficientes sejam criados para exigir a alocação de um novo bloco de dados para ele.
RHEL 7 usa XFS como sistema de arquivos padrão, então pode ser isso que você está executando.O XFS possui vários formatos de diretório, e o formato abreviado usado para diretórios pequenos tem essencialmente o mesmo conjunto mínimo de número de inode + nome do arquivo + comprimento do nome do arquivo + comprimento total.