Como descobrir os principais diretórios ou arquivos que consomem mais espaço?

11

Meu disco está ficando sem espaço:

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
...
/dev/sda7       803G  715G   48G  95% /home

Gostaria de percorrer todo o diretório pessoal e descobrir os 10 principais diretórios ou arquivos que consomem espaço para decidir quem será removido.

du -sh * pode ver o tamanho de todos os subdiretórios, mas só obtém a pasta atual. Eu posso precisar dividir em muitos subdiretórios, respectivamente e recursivamente, para descobrir quem são os culpados de que preciso.

Existe uma boa maneira de fazer isso?

    
por Deqing 08.01.2013 / 10:58

8 respostas

5

Se você puder usar uma GUI, tente Baobab . Esta é uma ferramenta gráfica para analisar o uso do espaço em disco.

    
por 08.01.2013 / 11:04
10
O

ncdu é uma opção de linha de comando que verifica os diretórios e lista o uso do disco do mais alto ao mais baixo. É a minha vez de ferramenta para isso.

Você ainda terá que mergulhar de forma recursiva dessa maneira, mas é uma maneira fácil de fazer isso.

    
por 15.01.2013 / 17:38
9

Use este comando:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du / –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "3[1;31m" "|" "3[0m"}print " "$2" "(a/t*100)"% total"}'

Ele mostrará o tipo de gráfico na linha de comando mostrando os diretórios que consomem a maior parte do espaço em porcentagem.

Se você quiser analisar apenas o /home - você pode especificar isso no comando da seguinte forma:

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');du /home –exclude /proc –exclude /sys –max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++) {printf "3[1;31m" "|" "3[0m"}print " "$2" "(a/t*100)"% total"}'

Será parecido com isso:

Extraídode aqui .

    
por 08.01.2013 / 11:10
9

du | sort -rn | cabeça

  • du = Uso do disco
  • classificar usando ordem numérica, inversa
  • as dez primeiras linhas
por 15.01.2013 / 17:30
4

+1 para o Baobab. na linha de comando, eu costumo usar apenas du -hcsx * ou du -hcsx * | sort -h (precisa de uma versão recente com falha de sort ) e depois verificar subdiretórios conforme eu prossigo.

Além disso, mc tem uma característica interessante ao calcular os tamanhos dos subdiretórios pressionando Ctrl + Espaço na parte superior (pressione Ctrl + Espaço em cima de .. para calcular o tamanho de todos os subdiretórios. Depois, você pode selecionar ordenar por tamanho no menu.

    
por 08.01.2013 / 11:34
1

Tente isto:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10
    
por 06.05.2014 / 19:56
0

Outro favorito da GUI: kdirstat

Ele tem ótimos recursos de pesquisa detalhada e um menu de ferramentas (extensível) para ajudá-lo a excluir / compactar seus arquivos.

Eu também tenho um script de linha de comando que chamo de dir_usage que carreguei para pastebin.

    
por 15.01.2013 / 17:44
-1
find . -type f -print0 | xargs -0 du | sort -n | tail -10 | cut -f2 | xargs -I{} du -sh {}

A linha de comando acima faz o seguinte (em ordem):

  • Localizar todos os arquivos (não diretórios) dentro da pasta atual
  • Exibir uso para cada um deles
  • Classifique os resultados numericamente
  • Use somente as últimas 10 linhas (maior uso)
  • Recorte os 10 nomes de arquivos (a primeira coluna é usada, a segunda é o nome do arquivo)
  • Exibir o uso de cada nome de arquivo (em formato humano)

Isso resultará em uma lista de tamanhos legíveis por humanos dos 10 arquivos maiores dentro da pasta e das subpastas atuais.

    
por 19.11.2013 / 11:25