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

55

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

    
por Hemant 10.08.2010 / 21:54

4 respostas

39

Esse é o tamanho do espaço no disco que é usado para armazenar as informações meta do diretório (ou seja, a tabela de arquivos que pertence a esse diretório). Se for isto é, 1024 isto significa que 1024 bytes no disco são usados (sempre aloca blocos inteiros) para este propósito.

    
por 10.08.2010 / 22:02
12

Um diretório reserva 4096 bytes (no mínimo) para metadados sobre si mesmo e seu conteúdo.

Além disso, 4096 bytes são 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, isto é devido ao tamanho de 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 preenchidos, o espaço reservado para metadados não pode ser realocado sem a remoção do diretório.

    
por 01.10.2012 / 21:37
10

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

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

  • No sistema de arquivos histórico do UNIX atualmente denominado v7-fs , os diretórios foram repetidos em 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 foi significativo em relação à operação read(2) e sempre cresceu ou permaneceu como está. As entradas . e .. são criadas vinculando-as manualmente ao diretório atual e ao diretório um nível acima. A contagem de links para um diretório inicial vazio é 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 é concedido para ser estável, portanto os comandos de espaço do usuário não são permissão para ler este formato. O "tamanho" informado é o tamanho em bytes como em v7-fs, o tamanho geralmente cresce ou fica como está, mas versões mais recentes do sistema de arquivos podem reduzir o tamanho sob algumas condições - mas nem sempre quando você pode esperar isso. A contagem de links relatada para um diretório vazio é 2, com v7-fs .

  • Em WOFS , o sistema de arquivos que 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, em WOFS , os arquivos 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() , só obterá 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 é completamente 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 copiaram conceitos de WOFS . Os diretórios no ZFS informam o number of directory entries em st_size , portanto, o "tamanho" informado não tem um 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 suporta diretórios de link físico, mas a contagem de links relatados para diretórios é 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, as ideias de WOFS . O WAFL do Netapp foi escrito três anos após o artigo WOFS ter sido publicado, o WAFL é copy-on-write, mas o WAFL parece reportar valores de "tamanho" que podem ser o "tamanho real do diretório" sob a suposição de que o diretório conteúdo.

por 30.12.2015 / 12:35
3

Um diretório é apenas um diretório, como um diretório de telefone. É 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 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 reduzidos dependendo do sistema de arquivos.

    
por 01.10.2012 / 23:27