Rastreando para onde foi o espaço em disco no Linux?

532

Ao administrar sistemas Linux, muitas vezes me encontro lutando para localizar o culpado depois que uma partição fica cheia. Eu normalmente uso, du / | sort -nrmas em um sistema de arquivos grande isso leva muito tempo antes que qualquer resultado seja retornado.

Além disso, isso geralmente é bem-sucedido em destacar o pior infrator, mas muitas vezes me vejo recorrendo dusem os sort casos mais sutis e depois tenho que vasculhar a saída.

Eu preferiria uma solução de linha de comando que se baseie nos comandos padrão do Linux, pois tenho que administrar alguns sistemas e instalar um novo software é um aborrecimento (especialmente quando não há espaço em disco!)

Stephen Kitt
fonte
1
@ Bart obrigado por dedicar um tempo para melhorar as postagens aqui, mas posso pedir um pouco mais de atenção ao adicionar tags? Tags não são para visibilidade, elas descrevem a pergunta. A tag de disco não é apropriada aqui (veja a descrição da tag) e as pelo menos duas tags adicionadas nesta edição sugerida não eram apropriadas lá (Kali não é Debian e não há PPAs envolvidos).
Stephen Kitt

Respostas:

614

Experimente ncdu, um excelente analisador de uso de disco de linha de comando:

insira a descrição da imagem aqui

KERR
fonte
6
Normalmente, eu odeio ser solicitado a instalar algo para resolver um problema simples, mas isso é ótimo.
gwg 5/07/2016
14
sudo apt install ncduno ubuntu fica fácil. É ótimo
Orion Edwards
10
Você provavelmente sabe qual sistema de arquivos está com pouco espaço. Nesse caso, você pode usar ncdu -xpara contar apenas arquivos e diretórios no mesmo sistema de arquivos que o diretório que está sendo verificado.
Luke Cousins
7
melhor resposta. também: sudo ncdu -rx /deve fornecer uma leitura limpa apenas nos principais diretórios / arquivos na unidade de área raiz. ( -r= Somente leitura, -x = permanecer no mesmo sistema de arquivos (ou seja: não atravessar outras montagens de sistema de arquivos))
bshea
5
Eu tenho tão pouco espaço que eu não posso instalar ncdu
Chris
337

Não vá direto para du /. Use dfpara encontrar a partição que está machucando você e tente ducomandos.

Um que eu gosto de tentar é

# U.S.
du -h <dir> | grep '[0-9\.]\+G'
# Others
du -h <dir> | grep '[0-9\,]\+G'

porque imprime tamanhos em "forma legível por humanos". A menos que você tenha partições muito pequenas, o grepping para diretórios em gigabytes é um filtro muito bom para o que você deseja. Isso levará algum tempo, mas, a menos que você tenha cotas configuradas, acho que será assim.

Como @jchavannes aponta nos comentários, a expressão pode ser mais precisa se você encontrar muitos falsos positivos. Eu incorporei a sugestão, o que a torna melhor, mas ainda existem falsos positivos, então existem apenas trocas (expr mais simples, resultados piores; expr mais complexo e mais longo, melhores resultados). Se você tiver muitos diretórios pequenos aparecendo em sua saída, ajuste seu regex de acordo. Por exemplo,

grep '^\s*[0-9\.]\+G'

é ainda mais preciso (nenhum diretório de <1 GB será listado).

Se você fazer têm quotas, você pode usar

quota -v

para encontrar usuários que estão monopolizando o disco.

Ben Collins
fonte
2
Isso é muito rápido, simples e prático
zzapper 29/10/12
24
grep '[0-9]G'continha muitos falsos positivos e também omitia decimais. Isso funcionou melhor para mim:sudo du -h / | grep -P '^[0-9\.]+G'
jchavannes
1
No caso de você ter realmente grandes diretórios, você vai querer [GT]em vez de apenasG
Vitruvius
1
Existe uma ferramenta que monitore continuamente o uso do disco em todos os diretórios (preguiçosamente) no sistema de arquivos? Algo que pode ser transmitido para uma interface da web? De preferência, informações em tempo real suave.
CMCDragonkai
20
Eu gosto de usardu -h | sort -hr | head
augurar 13/06/16
104

Para uma primeira olhada, use a visualização "resumo" de du:

du -s /*

O efeito é imprimir o tamanho de cada um de seus argumentos, ou seja, todas as pastas raiz no caso acima.

Além disso, o GNUdu e o BSDdu podem ter restrições de profundidade ( mas o POSIX dunão pode! ):

  • GNU (Linux,…):

    du --max-depth 3
  • BSD (macOS,…):

    du -d 3
    

Isso limitará a exibição da saída à profundidade 3. O tamanho calculado e exibido ainda é o total da profundidade total, é claro. Mas, apesar disso, restringir a profundidade da tela acelera drasticamente o cálculo.

Outra opção útil é -h(palavras no GNU e no BSD, mas, mais uma vez, não apenas no POSIX du) para saída "legível por humanos" (por exemplo, usando KiB, MiB etc. ).

Konrad Rudolph
fonte
23
se dureclama sobre -dtente --max-depth 5em vez disso.
precisa
8
Grande resposta. Parece correto para mim. Eu sugiro du -hcd 1 /directory. -h para legível por humanos, c para total ed para profundidade.
Estou usandodu -hd 1 <folder to inspect> | sort -hr | head
jonathanccalixto
du --max-depth 5 -h /* 2>&1 | grep '[0-9\.]\+G' | sort -hr | headpara filtrar Permissão negada
srghma
49

Você também pode executar o seguinte comando usando du:

~# du -Pshx /* 2>/dev/null
  • A -sopção resume e exibe o total para cada argumento.
  • h imprime Mio, Gio, etc.
  • x = fica em um sistema de arquivos (muito útil).
  • P = não segue links simbólicos (que podem fazer com que os arquivos sejam contados duas vezes, por exemplo).

Tenha cuidado, o /rootdiretório não será mostrado, você deve executar ~# du -Pshx /root 2>/dev/nullpara obtê-lo (uma vez, lutei muito sem apontar que meu /rootdiretório estava cheio).

Editar: opção corrigida -P

Creasixtine
fonte
2
du -Pshx .* * 2>/dev/null+ diretórios ocultos / sistema
Mykhaylo Adamovych
27

Encontrar os maiores arquivos no sistema de arquivos sempre levará muito tempo. Por definição, você precisa percorrer todo o sistema de arquivos procurando arquivos grandes. A única solução é provavelmente executar uma tarefa cron em todos os seus sistemas para que o arquivo esteja pronto com antecedência.

Outra coisa, a opção x do du é útil para evitar que o du siga os pontos de montagem em outros sistemas de arquivos. Ou seja:

du -x [path]

O comando completo que eu costumo executar é:

sudo du -xm / | sort -rn > usage.txt

Os -mmeios retornam resultados em megabytes e sort -rnclassificam primeiro o maior número de resultados. Você pode abrir o arquivo use.txt em um editor e as pastas maiores (começando com /) estarão no topo.

rjmunro
fonte
3
Obrigado por apontar a -xbandeira!
Samb
1
"encontrar o maior leva muito tempo .." -> Bem, depende, mas tende a discordar: não demora tanto com utilitários como ncdu- pelo menos mais rápido que duou find(dependendo da profundidade e dos argumentos) ..
bshea
desde que eu prefiro não ser root, tive que adaptar onde o arquivo está escrito:sudo du -xm / | sort -rn > ~/usage.txt
Bruno
20

Eu sempre uso du -sm * | sort -n, que fornece uma lista classificada de quanto os subdiretórios do diretório de trabalho atual usam, em mebibytes.

Você também pode experimentar o Konqueror, que possui um modo de "exibição de tamanho", semelhante ao que o WinDirStat faz no Windows: fornece uma representação visual de quais arquivos / diretórios ocupam a maior parte do seu espaço.

Atualização: nas versões mais recentes, você também pode usar o du -sh * | sort -hque mostrará o tamanho dos arquivos legíveis por humanos e classificar por eles. (os números terão o sufixo K, M, G, ...)

Para quem procura uma alternativa à exibição do tamanho do arquivo Konqueror do KDE3, pode dar uma olhada na luz do arquivo, embora não seja tão bom.

wvdschel
fonte
Porém, é apenas o Konqueror 3.x - a visualização do tamanho do arquivo ainda não foi portada para o KDE4.
'du -sh * | sort -h 'funciona perfeitamente na minha caixa do Linux (Centos distro). Obrigado!
pahariayogi
18

Eu uso isso para os 25 piores criminosos abaixo do diretório atual

# -S to not include subdir size, sorted and limited to top 25
du -S . | sort -nr | head -25
serg10
fonte
Este comando fez o truque para encontrar uma pasta oculta que parecia aumentar de tamanho ao longo do tempo. Obrigado!
precisa
Isso está em bytes?
Utilizador
Por padrão, no meu sistema, 'du -S' fornece uma boa saída legível por humanos. Você obtém um número simples de bytes para arquivos pequenos e, em seguida, um número com o sufixo 'KB' ou 'MB' para arquivos maiores.
serg10
Você pode usar du -Sh para obter uma saída legível por humanos.
Siddhartha
@Siddhartha Se você adicionar -h, ele provavelmente vai mudar o efeito do sort -nrcomando - o que significa o tipo deixarão de funcionar, e então o headcomando será também não funcionam mais
Clare Macrae
14

Em uma empresa anterior, costumávamos ter um trabalho cron que era executado da noite para o dia e identificávamos qualquer arquivo com um determinado tamanho, por exemplo,

encontre / -tamanho + 10000k

Você pode ser mais seletivo sobre os diretórios que está pesquisando e estar atento a quaisquer unidades montadas remotamente que possam ficar offline.

Andrew Whitehouse
fonte
Você pode usar a -x opção find para garantir que você não encontre arquivos em outros dispositivos além do ponto de partida do seu comando find. Isso corrige o problema das unidades montadas remotamente.
Rjmunro
10

Uma opção seria executar o comando du / sort como um trabalho cron e enviar para um arquivo, para que ele já esteja lá quando você precisar.


fonte
9

Para a linha de comando, acho que o método du / sort é o melhor. Se você não estiver em um servidor, consulte o Baobab - Analisador de uso de disco . Esse programa também leva algum tempo para ser executado, mas você pode encontrar facilmente o subdiretório bem no fundo, onde estão todos os ISOs antigos do Linux.

Peter Stuifzand
fonte
2
Também pode digitalizar pastas remotas via SSH, FTP, SMB e WebDAV.
Isso é ótimo. Algumas coisas simplesmente funcionam melhor com uma GUI para visualizá-las, e essa é uma delas! De qualquer forma, preciso de um servidor X no meu servidor para o CrashPlan, por isso também funciona nisso.
timelmer
9

eu uso

du -ch --max-depth=2 .

e altero a profundidade máxima para atender às minhas necessidades. A opção "c" imprime totais para as pastas e a opção "h" imprime os tamanhos em K, M ou G, conforme apropriado. Como já foi dito, ele ainda verifica todos os diretórios, mas limita a saída de uma maneira que acho mais fácil encontrar os diretórios grandes.


fonte
9

Eu vou para o segundo xdiskusage. Mas vou acrescentar que, na verdade, é um du frontend e pode ler a saída du de um arquivo. Para que você possa executar du -ax /home > ~/home-duno servidor, scpo arquivo de volta e analisá-lo graficamente. Ou canalize-o através do ssh.

derobert
fonte
6

Tente alimentar a saída do du em um script awk simples que verifique se o tamanho do diretório é maior que algum limite, caso contrário, ele será impresso. Você não precisa esperar que a árvore inteira seja percorrida antes de começar a obter informações (em comparação com muitas das outras respostas).

Por exemplo, o seguinte exibe todos os diretórios que consomem mais de cerca de 500 MB.

du -kx / | awk '{ if ($1 > 500000) { print $0} }'

Para tornar o exposto um pouco mais reutilizável, você pode definir uma função no seu .bashrc (ou pode transformá-lo em um script independente).

dubig() {
    [ -z "$1" ] && echo "usage: dubig sizethreshMB [dir]" && return
    du -kx $2 | awk '{ if ($1 > '$1'*1024) { print $0} }'
}

Portanto, dubig 200 ~/procura no diretório pessoal (sem seguir os links simbólicos desativados no dispositivo) os diretórios que usam mais de 200 MB.

Mark Borgerding
fonte
É uma pena que uma dúzia de hacks grep sejam mais votados. Ah, e du -kfará com que seja absolutamente certo de que du está usando unidades KB
ndemou
Boa ideia sobre o -k. Editado.
precisa
Ainda mais simples e mais robusto: du -kx $2 | awk '$1>'$(($1*1024))(se você especificar apenas um padrão condição aka para awk a ação padrão é print $0)
dave_thompson_085
Bom ponto @ date_thompson_085. Isso é verdade para todas as versões do awk que eu conheço (net / free-BSD e GNU). @ mark-Borgerding então isso significa que você pode simplificar muito o seu primeiro exemplo apenasdu -kx / | awk '$1 > 500000'
ndemou
@ mark-borgerding: Se você tiver apenas alguns kBytes em algum lugar, também poderá manter toda a saída do du assim du -kx / | tee /tmp/du.log | awk '$1 > 500000'. Isto é muito útil porque se o seu primeiro filtragem acaba por ser infrutífera você pode tentar outros valores como este awk '$1 > 200000' /tmp/du.logou inspecionar a saída completa como esta sort -nr /tmp/du.log|lesssem re-digitalizar todo o sistema de arquivos
ndemou
4

Eu gosto do bom e velho xdiskusage como uma alternativa gráfica ao du (1).

asjo
fonte
Observe esta parte da pergunta: "Prefiro uma solução de linha de comando que dependa dos comandos padrão do Linux desde ..."
ndemou
4

Prefiro usar o seguinte para obter uma visão geral e detalhar a partir daí ...

cd /folder_to_check
du -shx */

Isso exibirá resultados com saída legível por humanos, como GB, MB. Também impedirá a navegação através de sistemas de arquivos remotos. A -sopção mostra apenas o resumo de cada pasta encontrada, para que você possa detalhar mais se estiver interessado em mais detalhes de uma pasta. Lembre-se de que esta solução mostrará apenas pastas, portanto, você desejará omitir o / após o asterisco se também desejar arquivos.

cmevoli
fonte
4

Não mencionado aqui, mas você também deve verificar lsof no caso de arquivos excluídos / suspensos. Eu tinha um arquivo tmp excluído de 5,9 GB de um cronjob de fuga.

https://serverfault.com/questions/207100/how-can-i-find-phantom-storage-usage Me ajudou a encontrar o proprietário do processo do referido arquivo (cron) e, em seguida, consegui ir /proc/{cron id}/fd/{file handle #}menos ao arquivo pergunta para obter o início da fuga, resolva isso e, em seguida, ""> faça eco do arquivo para liberar espaço e deixar que o cron se feche graciosamente.

David
fonte
3

A partir do terminal, você pode obter uma representação visual do uso do disco com dutree

É muito rápido e leve porque é implementado no Rust

holandês

$ dutree -h
Usage: dutree [options] <path> [<path>..]

Options:
    -d, --depth [DEPTH] show directories up to depth N (def 1)
    -a, --aggr [N[KMG]] aggregate smaller than N B/KiB/MiB/GiB (def 1M)
    -s, --summary       equivalent to -da, or -d1 -a1M
    -u, --usage         report real disk usage instead of file size
    -b, --bytes         print sizes in bytes
    -f, --files-only    skip directories for a fast local overview
    -x, --exclude NAME  exclude matching files or directories
    -H, --no-hidden     exclude hidden files
    -A, --ascii         ASCII characters only, no colors
    -h, --help          show help
    -v, --version       print version number

Veja todos os detalhes de uso no site

nachoparker
fonte
2

Para a linha de comando du (e suas opções) parece ser o melhor caminho. O DiskHog também usa informações du / df de um trabalho cron, portanto a sugestão de Peter é provavelmente a melhor combinação de simples e eficaz.

( FileLight e KDirStat são ideais para GUI.)

hometoast
fonte
2

Você pode usar ferramentas padrão como finde sortpara analisar o uso do espaço em disco.

Liste os diretórios classificados por tamanho:

find / -mount -type d -exec du -s "{}" \; | sort -n

Listar arquivos classificados por tamanho:

find / -mount -printf "%k\t%p\n" | sort -n
scai
fonte
1
Eu acho que isso seja a melhor resposta, para detectar a grande porte na ordem de classificação
vimal krishna
2

Talvez seja importante notar que mc(Midnight Commander, um gerenciador de arquivos clássico em modo de texto), por padrão, mostra apenas o tamanho dos inodes de diretório (geralmente 4096), mas com CtrlSpaceou com o menu Ferramentas, você pode ver o espaço ocupado pelo diretório selecionado em um arquivo legível por humanos. formato (por exemplo, alguns como 103151M).

Por exemplo, a imagem abaixo mostra o tamanho total das distribuições de baunilha TeX Live de 2018 e 2017, enquanto as versões de 2015 e 2016 mostram apenas o tamanho do inode (mas elas têm realmente perto de 5 Gb cada).

Ou seja, CtrlSpacedeve ser feito um por um, apenas para o nível de diretório real, mas é tão rápido e prático quando você está navegando com mcque talvez você não precise ncdu(que de fato, apenas para esse fim é melhor). Caso contrário, você também pode executar a ncdupartir de mc. sem sair mcou iniciar outro terminal.

mwe

Fran
fonte
1

Inicialmente, verifico o tamanho dos diretórios, assim:

du -sh /var/cache/*/
Hendry
fonte
1

Se você souber que os arquivos grandes foram adicionados nos últimos dias (por exemplo, 3), use o comando find em conjunto com " ls -ltra" para descobrir os arquivos adicionados recentemente:

find /some/dir -type f -mtime -3 -exec ls -lart {} \;

Isso fornecerá apenas os arquivos (" -type f"), não os diretórios; apenas os arquivos com tempo de modificação nos últimos 3 dias (" -mtime -3") e execute " ls -lart" em cada arquivo encontrado ( -execparte " ").


fonte
1

Para entender o uso desproporcional do espaço em disco, geralmente é útil iniciar no diretório raiz e percorrer alguns de seus maiores filhos.

Podemos fazer isso

  • salvando a saída de du em um arquivo
  • grepping através do resultado iterativamente

Isso é:

# sum up the size of all files and directories under the root filesystem
du -a -h -x / > disk_usage.txt
# display the size of root items
grep $'\t/[^/]*$' disk_usage.txt

agora digamos / usr parece muito grande

# display the size of /usr items
grep $'\t/usr/[^/]*$' disk_usage.txt

Agora, se / usr / local é suspeitamente grande

# display the size /usr/local items
grep $'\t/usr/local/[^/]*$' disk_usage.txt

e assim por diante...

Alex Jasmin
fonte
1

Eu usei este comando para encontrar arquivos maiores que 100Mb:

find / -size +100M -exec ls -l {} \;

fonte
0

Tive sucesso em rastrear o (s) pior (s) infrator (es), canalizando a dusaída em forma legível para humanos egrepe correspondendo a uma expressão regular.

Por exemplo:

du -h | egrep "[0-9]+G.*|[5-9][0-9][0-9]M.*"

o que deve devolver tudo 500 megas ou mais.

Justin Standard
fonte
Não use grep para operações aritméticas - uso awk em vez disso: du -k | awk '$1 > 500000'. É muito mais fácil entender, editar e corrigir na primeira tentativa.
Ndemou 04/07
0

Se você deseja velocidade, é possível ativar cotas nos sistemas de arquivos que deseja monitorar (não é necessário definir cotas para nenhum usuário) e usar um script que use o comando quota para listar o espaço em disco que está sendo usado por cada usuário. Por exemplo:

quota -v $user | grep $filesystem | awk '{ print $2 }'

daria a você o uso do disco em blocos para o usuário específico no sistema de arquivos específico. Dessa forma, você poderá verificar os usos em questão de segundos.

Para habilitar cotas, você precisará adicionar usrquota às opções do sistema de arquivos no seu arquivo / etc / fstab e, em seguida, provavelmente reiniciar para que o quotacheck possa ser executado em um sistema de arquivos inativo antes que a quotaon seja chamada.


fonte
0

Aqui está um pequeno aplicativo que usa amostragem profunda para encontrar tumores em qualquer disco ou diretório. Ele percorre a árvore de diretórios duas vezes, uma vez para medi-la e a segunda vez para imprimir os caminhos para 20 bytes "aleatórios" no diretório.

void walk(string sDir, int iPass, int64& n, int64& n1, int64 step){
    foreach(string sSubDir in sDir){
        walk(sDir + "/" + sSubDir, iPass, n, n1, step);
    }
    foreach(string sFile in sDir){
        string sPath = sDir + "/" + sFile;
        int64 len = File.Size(sPath);
        if (iPass == 2){
            while(n1 <= n+len){
               print sPath;
               n1 += step;
            }
        }
        n += len;
    }
}

void dscan(){
    int64 n = 0, n1 = 0, step = 0;
    // pass 1, measure
    walk(".", 1, n, n1);
    print n;
    // pass 2, print
    step = n/20; n1 = step/2; n = 0;
    walk(".", 2, n, n1);
    print n;
}

A saída fica assim no meu diretório Arquivos de Programa:

 7,908,634,694
.\ArcSoft\PhotoStudio 2000\Samples\3.jpg
.\Common Files\Java\Update\Base Images\j2re1.4.2-b28\core1.zip
.\Common Files\Wise Installation Wizard\WISDED53B0BB67C4244AE6AD6FD3C28D1EF_7_0_2_7.MSI
.\Insightful\splus62\java\jre\lib\jaws.jar
.\Intel\Compiler\Fortran\9.1\em64t\bin\tselect.exe
.\Intel\Download\IntelFortranProCompiler91\Compiler\Itanium\Data1.cab
.\Intel\MKL\8.0.1\em64t\bin\mkl_lapack32.dll
.\Java\jre1.6.0\bin\client\classes.jsa
.\Microsoft SQL Server\90\Setup Bootstrap\sqlsval.dll
.\Microsoft Visual Studio\DF98\DOC\TAPI.CHM
.\Microsoft Visual Studio .NET 2003\CompactFrameworkSDK\v1.0.5000\Windows CE\sqlce20sql2ksp1.exe
.\Microsoft Visual Studio .NET 2003\SDK\v1.1\Tool Developers Guide\docs\Partition II Metadata.doc
.\Microsoft Visual Studio .NET 2003\Visual Studio .NET Enterprise Architect 2003 - English\Logs\VSMsiLog0A34.txt
.\Microsoft Visual Studio 8\Microsoft Visual Studio 2005 Professional Edition - ENU\Logs\VSMsiLog1A9E.txt
.\Microsoft Visual Studio 8\SmartDevices\SDK\CompactFramework\2.0\v2.0\WindowsCE\wce500\mipsiv\NETCFv2.wce5.mipsiv.cab
.\Microsoft Visual Studio 8\VC\ce\atlmfc\lib\armv4i\UafxcW.lib
.\Microsoft Visual Studio 8\VC\ce\Dll\mipsii\mfc80ud.pdb
.\Movie Maker\MUI\0409\moviemk.chm
.\TheCompany\TheProduct\docs\TheProduct User's Guide.pdf
.\VNI\CTT6.0\help\StatV1.pdf
7,908,634,694

Diz-me que o diretório é 7,9gb, dos quais

  • ~ 15% vai para o compilador Intel Fortran
  • ~ 15% vai para o VS .NET 2003
  • ~ 20% vai para o VS 8

É simples o suficiente perguntar se algum deles pode ser descarregado.

Ele também fala sobre os tipos de arquivos distribuídos pelo sistema de arquivos, mas juntos representam uma oportunidade para economizar espaço:

  • ~ 15% aproximadamente vai para arquivos .cab e .MSI
  • ~ 10% vai para o registro de arquivos de texto

Ele mostra muitas outras coisas lá também, que eu provavelmente poderia prescindir, como suporte a "SmartDevices" e "ce" (~ 15%).

Leva tempo linear, mas não precisa ser feito com frequência.

Exemplos de coisas que encontrou:

  • cópias de backup de DLLs em muitos repositórios de código salvos, que realmente não precisam ser salvos
  • uma cópia de backup do disco rígido de alguém no servidor, em um diretório obscuro
  • arquivos de internet temporários volumosos
  • arquivos antigos de documentos e ajuda há muito tempo sendo necessários

fonte
0

Eu tive um problema semelhante, mas as respostas nesta página não foram suficientes. Eu achei o seguinte comando o mais útil para a listagem:

du -a / | sort -n -r | head -n 20

O que me mostraria os 20 maiores infratores. No entanto, apesar de eu ter executado isso, ele não me mostrou o problema real, porque eu já havia excluído o arquivo. O problema foi que ainda havia um processo em execução que fazia referência ao arquivo de log excluído ... então eu tive que interromper esse processo primeiro e depois o espaço em disco apareceu como livre.

VenomFangs
fonte
Bom ponto, mas isso deve ser um comentário e não uma resposta por si só - essa questão sofre de muitas respostas
ndemou
0

Você pode usar o DiskReport.net para gerar um relatório on-line da web de todos os seus discos.

Com muitas execuções, ele mostra o gráfico do histórico de todas as suas pastas, fácil de encontrar o que cresceu

SteeTri
fonte
Esta ferramenta não corresponde a dois pontos principais da pergunta "Muitas vezes me encontro lutando para rastrear o culpado depois que uma partição fica cheia" e "Prefiro uma solução de linha de comando que se baseie nos comandos padrão do Linux"
ndemou
0

Há um belo software gratuito entre plataformas chamado JDiskReport, que inclui uma GUI para explorar o que está ocupando todo esse espaço.

Exemplo de captura de tela:
Captura de tela do JDiskReport

Obviamente, você precisará limpar um pouco de espaço manualmente antes de poder fazer o download e instalá-lo, ou faça o download para uma unidade diferente (como um pendrive USB).


(Copiado aqui da resposta do mesmo autor na pergunta duplicada)

WBT
fonte