por que o comando du (1) do unix não suporta a medição de inode?

7

É simplesmente porque ir de nomes de arquivos a números de inodes é difícil no espaço do usuário, e você não pode ler inodes de lá?

    
por nick black 14.12.2011 / 09:56

3 respostas

6

A implementação do du (1) do GNU coreutils suportará a opção --inodes com o próximo lançamento (> 8.21) ... Acabei de empurrar o patch para o Git upstream ( link ). Consulte o link

    
por 27.07.2013 / 15:14
2

Use df , não du !

du significa "uso do disco". É df que significa "livre de disco" e verificará o sistema de arquivos corretamente. Incluindo o uso do inode com a opção -i !

Caso contrário, faça:

find thedirectory -exec ls -di {} \;|awk '{print $1}'|sort|uniq|wc -c

ou similar

    
por 14.12.2011 / 09:59
2

Isso não dará uma resposta exata - em particular, equaciona entradas de diretório com arquivos e duplica a contagem de links físicos, além de ter problemas com feeds de linha em nomes de arquivos / diretórios - mas provavelmente é "bom o suficiente" para mais propósitos:

find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -n

Isso classifica por inode (sic) count. se você quiser uma ordem tradicional ordenada por diretório:

find /data | awk -F/ '{s=""; for (i=2; i<NF;i++) {s = s"/"$i; print s}}' | sort | uniq -c | sort -k2
Mais comumente eu quero algo assim quando uma unidade está ficando sem inodes e eu quero saber onde eles estão sendo usados. Para esse efeito, algumas imprecisões menores geralmente não são grandes problemas.

Deve ser possível usar "find -ls" e analisar os números de inode na listagem para eliminar duplicatas, se você quiser algo mais preciso.

    
por 05.02.2018 / 05:52