De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.


Determinando o número de arquivos em um sistema GNU Linux

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 27 de Fevereiro de 2003

O comando df é usado para exibir diversas informações sobre sistemas de arquivos. Em sua forma mais imediata, sem argumentos, ele exibe:

  % df
  Filesystem           1k-blocks      Used Available Use% Mounted on
  /dev/hda1               505605    220895    258606  47% /
  /dev/hda8               505605    224153    255348  47% /var
  /dev/hda9              5036284   4182564    597888  88% /usr
  /dev/hdb1              9803940   9305928         0 100% /work
  /dev/hda10              256667    134591    108824  56% /tmp
  /dev/hda5              3068312   2587388    480924  85% /usr/local
  /dev/hda7              9903732   9247408    656324  94% /home

Vemos aqui o tamanho de cada partição, quanto deste espaço está sendo usado, quanto está disponível, o percentual de uso, e o ponto de montagem.

Podemos também usar este comando para determinar o número de arquivos existente no sistema. Para isto empregamos a opção "-i", que exibe o número de inodes. Inodes são estruturas de dados que contêm informações sobre os arquivos em um sistema como por exemplo, quem é o dono dos arquivos, a quais grupos pertencem, data de última modificação, quem pode ler ou executar estes arquivos e assim por diante.

A cada arquivo do sistema está associado um inode. Desta forma, se pudermos saber quantos dos inodes disponíveis em um sistema estão sendo usados, determinamos o número de arquivos existentes neste sistema.

  % df -i
  Filesystem            Inodes   IUsed   IFree IUse% Mounted on
  /dev/hda1             130560   12457  118103   10% /
  /dev/hda8             130560    1951  128609    2% /var
  /dev/hda9             640000  104269  535731   17% /usr
  /dev/hdb1            1245184    6988 1238196    1% /work
  /dev/hda10             66264     308   65956    1% /tmp
  /dev/hda5            4294967295       0 4294967295    0% /usr/local
  /dev/hda7            4294967295       0 4294967295    0% /home

As partições /home e /usr/local estão formatadas com reiserfs e o total de inodes exibido é zero.

No campo Iused aparece o número de inodes usados pelo sistema. Com a ajuda do awk podemos determinar a soma de todos eles:

  % df -i | awk '{total=total+$3} END {print total}'
  125974

Se você somar o terceiro campo da saída do comando df acima verá que a conta bate. Por sinal, este pequeno exemplo com awk serve para várias outras coisas.... Use a sua imaginação :)


Comentários: Henrique Cesar Ulbrich <<henrique (a) digerati com br>>

Não dá pra dizer que inode = arquivo porque arquivos muito grandes estão contidos em vários inodes. Claro que, como o número de arquivos pequenos é muito grande (não deve haver mais que duas ou três dezenas de arquivos com mais de um inode), é possivel usar a dica como estimativa do número de arquivos. Mas não é possível dizer que o número de inodes é EXATAMENTE o número de arquivos.

Saiba mais lendo o "Linux Ext2fs Undeletion mini-HOWTO", em http://www.telenovela-world.com/~spade/linux/howto/mini/Ext2fs-Undeletion.html

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


Veja a relação completa dos artigos de Rubens Queiroz de Almeida