Como Obter o Tamanho de um Arquivo ou Diretório no Linux

  • Dave McKay

    @TheGurkha

  • 19 de dezembro de 2019, 8:00 EDT
Fatmawati Ela Zaenuri/

Quando você usa o Linux du comando, você obter o real de uso de disco e o verdadeiro tamanho de um arquivo ou diretório. Vamos explicar porque é que estes valores não são os mesmos.

Utilização real do disco e tamanho verdadeiro

o tamanho de um ficheiro e o espaço que ocupa no seu disco rígido raramente são os mesmos., O espaço em disco é alocado em blocos. Se um arquivo é menor que um bloco, um bloco inteiro ainda é alocado a ele porque o sistema de arquivos não tem uma unidade menor de imóveis para usar.

a menos que o tamanho de um arquivo seja um múltiplo exato de blocos, o espaço que ele usa no disco rígido deve ser sempre arredondado para o próximo bloco inteiro. Por exemplo, se um arquivo é maior que dois blocos, mas menor que três, ele ainda leva três blocos de espaço para armazená-lo.

publicidade

duas medições são utilizadas em relação ao tamanho do ficheiro., O primeiro é o tamanho real do arquivo, que é o número de bytes do conteúdo que compõem o arquivo. O segundo é o tamanho efetivo do arquivo no disco rígido. Este é o número de blocos de Sistema de arquivos necessários para armazenar esse arquivo.

um exemplo

vamos olhar para um exemplo simples., Vamos redirecionar um único caractere em um arquivo para criar um pequeno arquivo:

echo "1" > geek.txt

Agora, vamos usar o formato longo listagem, ls, a olhar para a duração do ficheiro:

ls -l geek.txt

o comprimento é O valor numérico que acompanha o dave dave entradas, que é de dois bytes. Por que são dois bytes quando só enviamos um personagem para o arquivo? Vamos ver o que está a acontecer dentro do ficheiro.,

publicitário

usaremos o comando hexdump, que nos dará uma contagem exata de bytes e nos permitirá “ver” caracteres não-impressores como valores hexadecimais. Também vamos usar o -C (canônico) opção para forçar a saída para mostrar valores hexadecimais no corpo da saída, bem como o seu carácter alfanumérico equivalentes:

hexdump -C geek.txt

A saída mostra-nos que, de início no deslocamento 00000000 no arquivo, há um byte que contém um valor hexadecimal de 31, e um que contém um valor hexadecimal de 0A., A parte direita da saída apresenta estes valores como caracteres alfanuméricos, sempre que possível.

o valor hexadecimal de 31 é usado para representar o algarismo um. O valor hexadecimal de 0A é usado para representar o caráter de linha de alimentação, que não pode ser mostrado como um caráter alfanumérico, por isso é mostrado como um período (.) Sim. O carácter da linha de alimentação é adicionado por echo . Por padrão, echoinicia uma nova linha depois de mostrar o texto que precisa escrever na janela do terminal.,

que corresponde à saída de ls e concorda com o tamanho do arquivo de dois bytes.

RELACIONADOS: Como Usar o Comando ls para Listar Arquivos e Diretórios no Linux

Propaganda

Agora, vamos usar o du comando para verificar o tamanho do arquivo:

du geek.txt

Ele diz que o tamanho é de quatro, mas quatro de quê?

existem blocos, e então há blocos

quando du relata tamanhos de arquivos em blocos, o tamanho que usa depende de vários fatores., Você pode especificar qual o tamanho do bloco que ele deve usar na linha de comando. Se você não forçar du a usar um tamanho de bloco particular, ele segue um conjunto de regras para decidir qual usar.

Primeiro, ele verifica as seguintes variáveis de ambiente:

  • DU_BLOCK_SIZE
  • BLOCK_SIZE
  • tamanho de bloco

Se qualquer um destes existir, o tamanho do bloco é definido, e du deixa de conferir. If none are set, du defaults to a block size of 1,024 bytes., A menos que, isto é, uma variável de ambiente chamada POSIXLY_CORRECT seja definida. Se for esse o caso, du defaults to a block size of 512 bytes.

anúncio

então, como é que descobrimos qual está em uso? Você pode verificar cada variável de ambiente para resolvê-lo, mas há uma maneira mais rápida. Vamos comparar os resultados com o tamanho do bloco que o sistema de arquivos USA em vez disso.

para descobrir o tamanho do bloco que o sistema de arquivos usa, usaremos o programa tune2fs., Usaremos então a opção -l (list superblock), canalize a saída através de grep, e depois imprime as linhas que contêm a palavra “Block.”

neste exemplo, vamos olhar para o sistema de ficheiros na primeira partição do primeiro disco rígido, sda1, e vamos precisar usar sudo:

sudo tune2fs -l /dev/sda1 | grep Block

O sistema de arquivos tamanho de bloco é 4096 bytes. Se dividirmos isso pelo resultado que obtivemos de du (quatro), ele mostra o du tamanho padrão do bloco é 1,024 bytes., Sabemos agora várias coisas importantes.

anúncio

primeiro, sabemos que a menor quantidade de Sistema de arquivos imóveis que pode ser dedicado a armazenar um arquivo é 4.096 bytes. Isso significa que até o nosso pequeno arquivo de dois bytes está ocupando 4 KB de espaço de disco rígido.

a segunda coisa A manter em mente é que os aplicativos dedicados para relatórios na unidade de disco rígido e sistema de arquivos, estatísticas, tais como du ls e tune2fs, pode ter diferentes concepções de “bloquear” significa., Otune2fs application reports true file system block sizes, whilels anddu pode ser configurado ou forçado a usar outros tamanhos de bloco. Esses tamanhos de bloco não são destinados a se relacionar com o tamanho de bloco do sistema de arquivos; eles são apenas “pedaços” que os comandos usam em sua saída.

finalmente, além de usar tamanhos de bloco diferentes, as respostas de du e tune2fs transmitem o mesmo significado., O resultadotune2fs foi um bloco de 4.096 bytes, e o resultadodu foi quatro blocos de 1.024 bytes.

usando du

sem parâmetros ou Opções da linha de comandos, du lista o espaço total em disco que a pasta actual e todas as sub-pastas estão a usar.

Let’s take a look at an example:

du
anúncio

o tamanho é indicado no tamanho padrão do bloco de 1,024 bytes por bloco. A árvore de subdiretório inteira é atravessada.,

Usando du em um Diretório Diferente

Se você quiser du relatório em um diretório diferente do que o atual, você pode passar o caminho para o diretório na linha de comando:

du ~/.cach/evolution/

Usando du em um Arquivo Específico

Se você quiser du relatório em um arquivo específico, passar o caminho para o arquivo na linha de comando., Você também pode passar um shell padrão para selecionar um grupo de arquivos, como *.txt:

du ~/.bash_aliases

Relatórios em Arquivos em Diretórios

Para que du relatório sobre os arquivos no diretório atual e subdiretórios, use o -a (todos os arquivos) opção:

du -a
Propaganda

Para cada diretório, o tamanho de cada arquivo é relatado, bem como um total de cada diretório.,

limitação da profundidade da árvore de pastas

pode dizer a du para listar a árvore de pastas a uma determinada profundidade. Para isso, use a opção -d (profundidade máxima) e forneça um valor de profundidade como parâmetro. Note que todas as subdiretórios são escaneadas e usadas para calcular os totais relatados, mas não estão todas listadas. Para definir uma profundidade máxima de diretório de um nível, use este comando:

du -d 1

a saída lista o tamanho total dessa subdiretoria no diretório atual e também fornece um total para cada um.,

A lista de diretórios de um nível mais profundo, use este comando:

du -d 2

Definir o Tamanho do Bloco

Você pode usar o block opção para definir um tamanho de bloco de du para a operação atual.,d mais apropriado bloco de tamanho de acordo com o espaço em disco usado pelos arquivos e diretórios, use o -h (legível) opção:

du -h

Para ver o tamanho aparente do arquivo, ao invés do que a quantidade de espaço no disco rígido usado para armazenar o arquivo, use o --apparent-size opção:

du --apparent-size
Propaganda

Você pode combinar isso com o -a (todos os) opção para ver o tamanho aparente de cada arquivo:

du --apparent-size -a

Cada arquivo está listado, juntamente com o seu tamanho aparente.,

mostrando apenas os totais

Se quiser dupara reportar apenas o total para a pasta, use a opção -s (resumo)., Você também pode combinar isso com outras opções, tais como o -h (legível) opção:

du -h -s

Aqui, nós vamos usar com a tag --apparent-size opção:

du --apparent-size -s

a Exibição de horas de Modificação

Para ver a criação ou última modificação, data e hora, utilize o --time opção:

du --time -d 2

Resultados Estranhos?,

Se você ver resultados estranhos a partir de du , especialmente quando você cross-reference tamanhos para a saída de outros comandos, geralmente é devido aos diferentes tamanhos de bloco para que os diferentes comandos podem ser definidas ou aqueles para os quais eles predefinição. Também pode ser devido às diferenças entre os tamanhos de arquivos reais e o espaço em disco necessário para armazená-los.

Se precisar de corresponder ao resultado de outros comandos, experimente com o --block opção em du.,Dave McKay usou pela primeira vez computadores quando a fita de papel perfurado estava em voga, e ele tem estado programando desde então. Depois de mais de 30 anos na indústria de TI, ele é agora um jornalista de tecnologia em tempo integral. Durante sua carreira, ele trabalhou como programador freelance, gerente de uma equipe internacional de desenvolvimento de software, um gerente de projeto de serviços de TI, e, mais recentemente, como um oficial de proteção de dados. Dave é um evangelista Linux e defensor de código aberto.Read Full Bio ”

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *