Como descobrir os principais diretórios ou arquivos que consomem 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 apenas obtém a pasta atual. Talvez eu precise me dividir em vários subdiretórios, respectivamente e recursivamente, para saber quem são os culpados de que preciso.

Existe uma boa maneira de fazer isso?

Deqing
fonte

Respostas:

5

Se você pode usar uma GUI, tente o Baobab . Esta é uma ferramenta gráfica para analisar o uso do espaço no disco rígido.

Uwe Plonus
fonte
10

O ncdu é uma opção de linha de comando que verifica os diretórios e lista o uso do disco do maior para o menor. É a minha ferramenta para isso.

Você ainda precisará mergulhar recursivamente dessa maneira, mas é uma maneira fácil e agradável de fazê-lo.

Roubar
fonte
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 "\033[1;31m" "|" "\033[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ê deseja analisar o /homeúnico - você pode especificar isso no comando como este:

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 "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Será assim: insira a descrição da imagem aqui

Retirado daqui .

mnmnc
fonte
9

du | classificar -rn | cabeça

  • du = Uso do disco
  • ordenar usando ordem numérica, reverter
  • as dez primeiras linhas
Julien
fonte
4

+1 para o Baobab. na linha de comando, geralmente apenas uso du -hcsx *ou du -hcsx * | sort -h(precisa de uma versão recente com falha sort) e depois checo os subdiretórios à medida que prossigo.

Além disso, mcpossui um recurso interessante para calcular tamanhos de subdiretórios pressionando Ctrl+ Spaceem cima dele (pressione Ctrl+ Spaceem cima ..para calcular o tamanho de todos os subdiretórios. Em seguida, você pode selecionar classificar por tamanho no menu.

Stefan Seidel
fonte
2
na linha de comando, você deve tentar ncdu. É um ncurses du, basicamente.
15133 Rob
1

Tente o seguinte:

du -a /dir | sort -nr | cut -f2 | xargs du -sh | head -n 10
Rajeev
fonte
0

Outro favorito da GUI: kdirstat

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

Também tenho um script de linha de comando que chamo de dir_usage que carreguei no pastebin.

Rich Homolka
fonte
-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):

  • Encontre todos os arquivos (não diretórios) na pasta atual
  • Exibir uso para cada um deles
  • Classifique os resultados numericamente
  • Use apenas as últimas 10 linhas (uso mais alto)
  • Recorte os 10 nomes de arquivos (a primeira coluna é o uso, 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 maiores arquivos da pasta e subpastas atuais.

user275234
fonte
3
Você pode expandir sua resposta?
50-3 19/11/2013