
Analisador de uso de disco muito rápido escrito em Go.
A GDU destina -se principalmente a discos SSD, onde pode utilizar completamente o processamento paralelo. No entanto, os HDDs também funcionam, mas o ganho de desempenho não é tão grande.
Vá para a página de lançamentos e faça o download do binário do seu sistema.
Usando CURL:
curl -L https://github.com/dundee/gdu/releases/latest/download/gdu_linux_amd64.tgz | tar xz
chmod +x gdu_linux_amd64
mv gdu_linux_amd64 /usr/bin/gdu
Consulte a página de instalação para outras maneiras de instalar a GDU no seu sistema.
Ou você pode usar a GDU diretamente via Docker:
docker run --rm --init --interactive --tty --privileged --volume /:/mnt/root ghcr.io/dundee/gdu /mnt/root
gdu [flags] [directory_to_scan]
Flags:
--config-file string Read config from file (default is $HOME/.gdu.yaml)
-g, --const-gc Enable memory garbage collection during analysis with constant level set by GOGC
--enable-profiling Enable collection of profiling data and provide it on http://localhost:6060/debug/pprof/
-L, --follow-symlinks Follow symlinks for files, i.e. show the size of the file to which symlink points to (symlinks to directories are not followed)
-h, --help help for gdu
-i, --ignore-dirs strings Absolute paths to ignore (separated by comma) (default [/proc,/dev,/sys,/run])
-I, --ignore-dirs-pattern strings Absolute path patterns to ignore (separated by comma)
-X, --ignore-from string Read absolute path patterns to ignore from file
-f, --input-file string Import analysis from JSON file
-l, --log-file string Path to a logfile (default "/dev/null")
-m, --max-cores int Set max cores that Gdu will use. 12 cores available (default 12)
-c, --no-color Do not use colorized output
-x, --no-cross Do not cross filesystem boundaries
--no-delete Do not allow deletions
-H, --no-hidden Ignore hidden directories (beginning with dot)
--no-mouse Do not use mouse
--no-prefix Show sizes as raw numbers without any prefixes (SI or binary) in non-interactive mode
-p, --no-progress Do not show progress in non-interactive mode
-u, --no-unicode Do not use Unicode symbols (for size bar)
-n, --non-interactive Do not run in interactive mode
-o, --output-file string Export all info into file as JSON
-r, --read-from-storage Read analysis data from persistent key-value storage
--sequential Use sequential scanning (intended for rotating HDDs)
-a, --show-apparent-size Show apparent size
-d, --show-disks Show all mounted disks
-C, --show-item-count Show number of items in directory
-M, --show-mtime Show latest mtime of items in directory
-B, --show-relative-size Show relative size
--si Show sizes with decimal SI prefixes (kB, MB, GB) instead of binary prefixes (KiB, MiB, GiB)
--storage-path string Path to persistent key-value storage directory (default "/tmp/badger")
-s, --summarize Show only a total in non-interactive mode
-t, --top int Show only top X largest files in non-interactive mode
--use-storage Use persistent key-value storage for analysis data (experimental)
-v, --version Print version
--write-config Write current configuration to file (default is $HOME/.gdu.yaml)
Basic list of actions in interactive mode (show help modal for more):
↑ or k Move cursor up
↓ or j Move cursor down
→ or Enter or l Go to highlighted directory
← or h Go to parent directory
d Delete the selected file or directory
e Empty the selected directory
n Sort by name
s Sort by size
c Show number of items in directory
? Show help modal
gdu # analyze current dir
gdu -a # show apparent size instead of disk usage
gdu --no-delete # prevent write operations
gdu <some_dir_to_analyze> # analyze given dir
gdu -d # show all mounted disks
gdu -l ./gdu.log <some_dir> # write errors to log file
gdu -i /sys,/proc / # ignore some paths
gdu -I '.*[abc]+' # ignore paths by regular pattern
gdu -X ignore_file / # ignore paths by regular patterns from file
gdu -c / # use only white/gray/black colors
gdu -n / # only print stats, do not start interactive mode
gdu -np / # do not show progress, useful when using its output in a script
gdu -nps /some/dir # show only total usage for given dir
gdu -nt 10 / # show top 10 largest files
gdu / > file # write stats to file, do not start interactive mode
gdu -o- / | gzip -c >report.json.gz # write all info to JSON file for later analysis
zcat report.json.gz | gdu -f- # read analysis from file
GOGC=10 gdu -g --use-storage / # use persistent key-value storage for saving analysis data
gdu -r / # read saved analysis data from persistent key-value storage
A GDU possui três modos: interativo (padrão), não interativo e exportação.
O modo não interativo é iniciado automaticamente quando o TTY não é detectado (usando o ISATTY), por exemplo, se a saída estiver sendo canalizada para um arquivo ou poderá ser iniciada explicitamente usando um sinalizador.
Modo de exportação (Flag -o ) produz todos os dados de uso como JSON, que podem ser abertos posteriormente usando o sinalizador -f .
Os links difíceis são contados apenas uma vez.
Arquivos e diretórios podem ser prefixados por uma bandeira de um caractere com o seguinte significado:
! Ocorreu um erro ao ler este diretório.
. Ocorreu um erro ao ler um subdiretório, o tamanho pode não estar correto.
@ Arquivo é simplink ou soquete.
H O mesmo arquivo já foi contado (link rígido).
O diretório e está vazio.
A GDU pode ler (e escrever) o arquivo de configuração da YAML.
$HOME/.config/gdu/gdu.yaml e $HOME/.gdu.yaml são verificados quanto à presa do arquivo de configuração por padrão.
Consulte a lista completa de todas as opções de configuração.
echo "no-color: true" >> ~/.gdu.yaml
sorting:
by: name // size, name, itemCount, mtime
order: desc
echo "change-cwd: true" >> ~/.gdu.yaml
gdu --write-config
Existem maneiras como os terminais podem ser coloridos. Algumas primitivas de GDU (como texto básico) Addapt para diferentes esquemas de cores, mas a linha selecionada/destacada não.
Se a aparência padrão não for suficiente, ela poderá ser alterada no arquivo de configuração, por exemplo:
style:
selected-row:
text-color: black
background-color: "#ff0000"
A GDU pode excluir itens em segundo plano, não bloqueando a interface do usuário para um trabalho adicional. Para ativar:
echo "delete-in-background: true" >> ~/.gdu.yaml
Os itens do diretório também podem ser excluídos em paralelo, o que pode aumentar a velocidade da exclusão. Para ativar:
echo "delete-in-parallel: true" >> ~/.gdu.yaml
A GDU tenta equilibrar o desempenho e o uso da memória.
Quando menos memória é usada por GDU do que a memória livre total do host, a coleta de lixo é desativada durante a fase de análise completamente para obter velocidade máxima.
Caso contrário, o GC está ativado. Quanto mais memória é usada e menos memória é gratuita, mais frequentemente o GC acontecerá.
Se você deseja controle manual sobre a coleta de lixo, você pode usar o sinalizador --const-gc / -g . Ele executará a coleta de lixo durante a fase de análise com nível constante de agressividade. Como resultado, a análise será cerca de 25% mais lenta e consumirá cerca de 30% menos memória. Para alterar o nível, você pode definir a variável de ambiente GOGC para especificar com que frequência a coleta de lixo acontecerá. Valor mais baixo (que 100) significa que o GC será executado com mais frequência. Mais alto significa menos frequência. Número negativo interromperá o GC.
Exemplo de GDU com GC constante, mas não tão agressivo quanto o padrão:
GOGC=200 gdu -g /
A GDU pode armazenar os dados de análise para armazenamento persistente de valor-chave em vez de apenas memória. A GDU funcionará muito mais lenta (aproximadamente 10x), mas deve usar muito menos memória (ao usar o pequeno GOGC). A GDU também pode reabrir com os dados salvos. Atualmente, apenas o BadgerDB é suportado como o armazenamento de valor-chave (incorporado).
GOGC=10 gdu -g --use-storage / # saves analysis data to key-value storage
gdu -r / # reads just saved data, does not run analysis again
make install-dev-dependencies
make test
A GDU pode coletar dados de perfil quando o sinalizador --enable-profiling é definido. Os dados são fornecidos via servidor HTTP incorporado no URL http://localhost:6060/debug/pprof/ .
Em seguida, você pode usar o EG go tool pprof -web http://localhost:6060/debug/pprof/heap para abrir o perfil Heap como imagem SVG no seu navegador da web.
Os benchmarks foram realizados no diretório 50G (diretórios 100K, arquivos 400K) em SSD de 500 GB usando hiperfina. Consulte a meta benchmark no Makefile para obter mais informações.
O cache do sistema de arquivos foi limpo usando sync; echo 3 | sudo tee /proc/sys/vm/drop_caches .
| Comando | Significa] | Min [s] | Max [s] | Parente |
|---|---|---|---|---|
diskus ~ | 3,126 ± 0,020 | 3.087 | 3.155 | 1,00 |
gdu -npc ~ | 3,132 ± 0,019 | 3.111 | 3.173 | 1,00 ± 0,01 |
gdu -gnpc ~ | 3,136 ± 0,012 | 3.112 | 3.155 | 1,00 ± 0,01 |
pdu ~ | 3,657 ± 0,013 | 3.641 | 3.677 | 1,17 ± 0,01 |
dust -d0 ~ | 3,933 ± 0,144 | 3.849 | 4.213 | 1,26 ± 0,05 |
dua ~ | 3,994 ± 0,073 | 3.827 | 4.134 | 1,28 ± 0,02 |
gdu -npc --use-storage ~ | 12.812 ± 0,078 | 12.644 | 12.912 | 4,10 ± 0,04 |
du -hs ~ | 14.120 ± 0,213 | 13.969 | 14.703 | 4,52 ± 0,07 |
duc index ~ | 14.567 ± 0,080 | 14.385 | 14.657 | 4,66 ± 0,04 |
ncdu -0 -o /dev/null ~ | 14.963 ± 0,254 | 14.759 | 15.637 | 4,79 ± 0,09 |
| Comando | Média [MS] | Min [ms] | Max [MS] | Parente |
|---|---|---|---|---|
pdu ~ | 226,6 ± 3,7 | 219.6 | 231.2 | 1,00 |
diskus ~ | 227,7 ± 5,2 | 221.6 | 239.9 | 1,00 ± 0,03 |
dust -d0 ~ | 400,1 ± 7,1 | 386.7 | 409.4 | 1,77 ± 0,04 |
dua ~ | 444,9 ± 2,4 | 442.4 | 448.9 | 1,96 ± 0,03 |
gdu -npc ~ | 451,3 ± 3,8 | 445.9 | 458.5 | 1,99 ± 0,04 |
gdu -gnpc ~ | 516,1 ± 6,7 | 503.1 | 527.5 | 2,28 ± 0,05 |
du -hs ~ | 905,0 ± 3,9 | 901.2 | 913.4 | 3,99 ± 0,07 |
duc index ~ | 1053,0 ± 5,1 | 1046.2 | 1064.1 | 4,65 ± 0,08 |
ncdu -0 -o /dev/null ~ | 1653,9 ± 5,7 | 1645.9 | 1663.0 | 7,30 ± 0,12 |
gdu -npc --use-storage ~ | 9754,9 ± 688,7 | 8403.8 | 10427.4 | 43.04 ± 3,12 |
C (LTS) ou zig (estável)Rust com interface semelhante a GDU (e NCDU)RustRust mostrando árvores como estruturas de uso de discoRust mostrando árvores como estruturas de uso de disco Ícone de HDD criado por Nikita Golubev - Flaticon