ti-enxame.com

O que significa tamanho de um diretório na saída do comando 'ls -l'?

O que significa tamanho de um diretório na saída de ls -l comando?

67
Hemant

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 que 1024 bytes no disco são usados ​​(sempre aloca blocos completos) para esse fim.

46
txwikinger

O "tamanho de um diretório" impresso com ls -l É (como em qualquer tipo de arquivo) o valor relatado pela chamada stat() em statbuf.st_size.

O que isso st_size Significa para diretórios depende completamente do tipo de sistema de arquivos. A menos que você conheça o tipo de sistema de arquivos e compreenda seus conceitos, não poderá deduzir nada do valor em st_size.

  • No sistema de arquivos histórico do UNIX atualmente normalmente chamado v7-fs, Os diretórios eram 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 à operação read(2) 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 desde 1989 (SVr4) é chamado ufs, os diretórios são uma série de registros de comprimento variável que usam um formato que não é considerado estável, portanto, os comandos do espaço do usuário não podem 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.

  • Em WOFS, o 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 chamada read(2) . Isso ocorre porque WOFS é o primeiro sistema de arquivos Copy-on-Write e porque nos arquivos WOFS relatam o diretório em que estão, em vez de serem listados no diretório. Se você ler um diretório WOFS usando readdir(), obtém apenas dados para as entradas pretendidas, mas nunca para . E ... A contagem de links de um diretório vazio em WOFS é 1 e todo o comportamento é totalmente compatível com POSIX.

  • Em ZFS, isso foi implementado após a leitura dos artigos WOFS. ZFS é um sistema de arquivos copy-on-write e seus autores não negam que tenham copiado conceitos de WOFS. Os diretórios no ZFS relatam o number of directory entries Em st_size; Portanto, o "tamanho" relatado não tem significado real em relação ao espaço em disco ocupado dos dados do diretório. Não há entradas . E .. Em um diretório ZFS, mas se você chamar readdir(), essas entradas serão falsificadas e retornadas para as duas primeiras operações. O ZFS é o único FS na lista que não oferece suporte a diretórios de link físico, mas a contagem de links relatada para diretórios é sempre 2. Essas duas irregularidades no ZFS são implementadas para reduzir a confusão em não- Programas históricos POSIX.

  • Semelhante ao ZFS, o WAFL copia algumas idéias, mas nem todas, de WOFS. WAFL da Netapp foi escrito três anos após a publicação do documento WOFS, o WAFL é copiado na gravação, mas o WAFL parece relatar valores de "tamanho" que podem ser o "tamanho do diretório real" em a suposição de que o diretório tenha conteúdo.

14
schily

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.

13
h3rrmiller

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.

4
Stéphane Chazelas