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

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

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

Responder1

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

Responder2

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

O que isso st_sizesignifica para os 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 UNIX atualmente normalmente denominado 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 à read(2)operação e sempre crescia ou permanecia como estava. 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 e sensato é 2.

  • No sistema de arquivos BSD-4.2 que desde 1989 é chamado (SVr4) 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, comandos de espaço do usuário não têm permissão para ler este formato. O "tamanho" relatado é o tamanho em bytes como na v7-fs, o tamanho geralmente aumenta ou permanece como está, mas versões mais recentes do sistema de arquivos podem diminuir 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 acontece com v7-fs.

  • No 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 possuem 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 os WOFSarquivos informam o diretório em que estão, em vez de serem listados no diretório. Se você ler um WOFSdiretório usando readdir(), obterá 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 é totalmente compatível com POSIX.

  • Em ZFS, isso foi implementado após a leitura dos WOFSartigos. ZFSé um sistema de arquivos copy-on-write e seus autores não negam que copiaram conceitos do WOFS. Os diretórios no ZFS relatam number of directory entriesin 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 .and ..em um diretório ZFS, mas se você chamar readdir(), essas entradas serão falsificadas e retornadas nas duas primeiras operações. 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 confusão em programas históricos não POSIX.

  • Semelhante ao ZFS, o WAFL copia algumas, mas não todas, ideias do WOFS. O Netapp WAFLfoi escrito 3 anos após a WOFSpublicação do artigo, o WAFL é cópia na gravação, mas o WAFL parece relatar valores de "tamanho" que podem ser o "tamanho real do diretório" sob a suposição de que o diretório tenha conteúdo.

Responder3

Um diretório reserva 4.096 bytes (no mínimo) para metadados sobre si mesmo 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 de bloco padrão do sistema de arquivos.

Os tamanhos dos diretórios também podem crescer dinamicamente à medida que são preenchidos, mas uma vez preenchido, o espaço reservado para metadados não pode ser realocado sem a remoção do diretório.

Responder4

Um diretório é apenas um diretório, como uma lista telefônica. É apenas um arquivo com uma lista de números e um nome próximo a eles. 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 reduzidos depende do sistema de arquivos.

informação relacionada