Respostas:
Esse é o tamanho do espaço no disco usado para armazenar as metainformações do diretório (ou seja, a tabela de arquivos que pertencem a esse diretório). Se for 1024, significa 1024 bytes no disco (sempre aloca blocos completos) para esse fim.
O "tamanho de um diretório" impresso com ls -l
(como em qualquer tipo de arquivo) é o valor relatado pela stat()
chamada statbuf.st_size
.
O que isso st_size
significa para diretórios depende completamente do tipo de sistema de arquivos. Se você não sabe o tipo de sistema de arquivos e entender seus conceitos, você não pode deduzir qualquer coisa de valor em st_size
.
No sistema de arquivos histórico UNIX atualmente normalmente chamado v7-fs
, os diretórios foram repetidos com entradas de 16 bytes que continham um número de inode de 16 bits e 14 bytes de nome de arquivo. O "tamanho" de um diretório era significativo em relação à read(2)
operação e sempre crescia ou permanecia como está. As entradas .
e ..
são criadas vinculando-as manualmente manualmente ao diretório atual e ao nível acima. A contagem de links para um diretório de donzela vazio e sadio é 2.
No sistema de arquivos BSD-4.2 que é chamado desde 1989 (SVr4) ufs
, os diretórios são uma série de registros de comprimento variável que usam um formato que não é garantido como estável, portanto, os comandos de espaço do usuário não têm permissão para ler esse formato. O "tamanho" relatado é o tamanho em bytes, como na v7-fs, o tamanho geralmente aumenta ou permanece como está, mas as versões mais recentes do sistema de arquivos podem reduzir o tamanho sob algumas condições - mas nem sempre quando você espera isso. A contagem de links relatada para um diretório vazio é 2 como em v7-fs
.
No WOFS
sistema de arquivos que eu projetei e implementei entre o verão de 1988 e maio de 1991, os diretórios sempre relatam o "tamanho" 0 e nunca têm um tipo de conteúdo que possa ser lido usando a read(2)
chamada. Isso ocorre porque WOFS
é o primeiro sistema de arquivos Copy-on-Write e porque nos WOFS
arquivos relatam o diretório em que estão, em vez de serem listados no diretório. Se você lê um WOFS
diretório usando readdir()
, obtém apenas dados para as entradas pretendidas, mas nunca para .
e ..
. A contagem de links de um diretório vazio WOFS
é 1 e todo o comportamento é completamente compatível com POSIX.
Em ZFS
, isso foi implementado após a leitura dos WOFS
jornais. ZFS
é um sistema de arquivos copy-on-write e seus autores não negam que copiaram conceitos WOFS
. Diretórios em ZFS relatar o number of directory entries
em st_size
, de modo que o "tamanho", relatou não tem significado real em relação ao espaço em disco ocupado a partir dos dados de diretório. Não existem entradas .
e ..
em um diretório ZFS, mas se você ligar readdir()
, essas entradas serão falsificadas e retornadas para as duas primeiras operações. O ZFS é o único FS da lista que não oferece suporte a diretórios de link físico, mas a contagem de links relatada é sempre 2. Essas duas irregularidades no ZFS são implementadas para reduzir a confusão em programas históricos não POSIX.
Semelhante ao ZFS, o WAFL copia algumas, mas não todas, idéias WOFS
. A Netapp WAFL
foi escrita três anos após a WOFS
publicação do documento, o WAFL é copiado na gravação, mas o WAFL parece relatar valores de "tamanho" que podem ser o "tamanho real do diretório", pressupondo que o diretório tenha conteúdo.
Um diretório reserva 4096 bytes (no mínimo) para metadados sobre si e seu conteúdo.
Além disso, 4096 bytes é a unidade de alocação padrão (bloco) para o sistema de arquivos ext2 / ext3 / ext4 e, portanto, um diretório não pode ser menor.
Em sistemas de arquivos diferentes, você pode encontrar diretórios com tamanhos padrão diferentes, devido ao tamanho do bloco padrão do sistema de arquivos.
Os tamanhos de diretório também podem crescer dinamicamente à medida que são preenchidos, mas, uma vez preenchido, o espaço reservado para os metadados não pode ser realocado sem a remoção do diretório.
Um diretório é apenas um diretório, como uma lista telefônica. É apenas um arquivo com uma lista de números e um nome ao lado deles. Cada número faz referência a um arquivo no sistema de arquivos (um número de inode) e o nome é o nome do arquivo.
Você precisa de espaço em disco para salvar esses dados, como eles são alocados, aumentados e diminuídos depende do sistema de arquivos.