
Analizador de uso de disco bastante rápido escrito en GO.
GDU está destinado principalmente a discos SSD donde puede utilizar completamente el procesamiento paralelo. Sin embargo, también funcionan los HDD, pero la ganancia de rendimiento no es tan grande.
Dirígete a la página de lanzamientos y descargue el binario para tu 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 la página de instalación de otras formas sobre cómo instalar GDU en su sistema.
O puede usar GDU directamente a través de 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
GDU tiene tres modos: interactivo (predeterminado), no interactivo y exportación.
El modo no interactivo se inicia automáticamente cuando no se detecta TTY (usando GO-ISATTY), por ejemplo, si la salida se vaya a un archivo, o se puede iniciar explícitamente mediante el uso de un indicador.
El modo de exportación (FLAG -o ) emite todos los datos de uso como JSON, que se puede abrir más tarde utilizando el indicador -f .
Los enlaces duros se cuentan solo una vez.
Los archivos y los directorios pueden estar prefijados por un indicador de un personaje con el siguiente significado:
! Se produjo un error al leer este directorio.
. Se produjo un error al leer un subdirectorio, el tamaño puede no ser correcto.
@ El archivo es Symlink o Socket.
H El mismo archivo ya se contó (enlace duro).
El directorio e está vacío.
GDU puede leer (y escribir) el archivo de configuración YAML.
$HOME/.config/gdu/gdu.yaml y $HOME/.gdu.yaml se verifican para el presente del archivo de configuración de forma predeterminada.
Consulte la lista completa de todas las opciones de configuración.
echo "no-color: true" >> ~/.gdu.yaml
sorting:
by: name // size, name, itemCount, mtime
order: desc
echo "change-cwd: true" >> ~/.gdu.yaml
gdu --write-config
Hay desperdicios de cómo se pueden colorear los terminales. Algunas primitivas de GDU (como el texto básico) adquieren a diferentes esquemas de color, pero la fila seleccionada/resaltada no.
Si el aspecto predeterminado no es suficiente, se puede cambiar en el archivo de configuración, por ejemplo:
style:
selected-row:
text-color: black
background-color: "#ff0000"
GDU puede eliminar elementos en segundo plano, por lo que no bloquea la interfaz de usuario para un trabajo adicional. Para habilitar:
echo "delete-in-background: true" >> ~/.gdu.yaml
Los elementos de directorio también se pueden eliminar en paralelo, lo que podría aumentar la velocidad de eliminación. Para habilitar:
echo "delete-in-parallel: true" >> ~/.gdu.yaml
GDU intenta equilibrar el rendimiento y el uso de la memoria.
Cuando GDU usa menos memoria que la memoria libre total del host, la recolección de basura se deshabilita durante la fase de análisis por completo para ganar la velocidad máxima.
De lo contrario, GC está habilitado. Cuanta más memoria se use y menos memoria sea gratuita, más a menudo sucederá el GC.
Si desea control manual sobre la recolección de basura, puede usar la bandera --const-gc / -g . Ejecutará la recolección de basura durante la fase de análisis con un nivel constante de agresividad. Como resultado, el análisis será aproximadamente un 25% más lento y consumirá aproximadamente un 30% menos de memoria. Para cambiar el nivel, puede establecer la variable de entorno GOGC para especificar con qué frecuencia ocurrirá la recolección de basura. Un valor más bajo (que 100) significa que GC se ejecutará con más frecuencia. Más alto significa con menos frecuencia. El número negativo detendrá GC.
Ejemplo de ejecutar GDU con GC constante, pero no tan agresivo como predeterminado:
GOGC=200 gdu -g /
GDU puede almacenar los datos de análisis al almacenamiento persistente de valor clave en lugar de solo memoria. GDU se ejecutará mucho más lento (aproximadamente 10x), pero debería usar mucha menos memoria (cuando se usa GOGC pequeño). GDU también puede reabrir con los datos guardados. Actualmente, solo BadgerDB es compatible como el almacenamiento de valor clave (integrado).
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
GDU puede recopilar datos de perfiles cuando se establece el indicador --enable-profiling . Los datos se proporcionan a través del servidor HTTP integrado en URL http://localhost:6060/debug/pprof/ .
Luego puede usar EG go tool pprof -web http://localhost:6060/debug/pprof/heap para abrir el perfil de montón como imagen SVG en su navegador web.
Los puntos de referencia se realizaron en el directorio 50G (directorios de 100k, 400k archivos) en SSD de 500 GB usando Hyperfine. Consulte el objetivo benchmark en MakeFile para obtener más información.
El caché del sistema de archivos se borra usando sync; echo 3 | sudo tee /proc/sys/vm/drop_caches .
| Dominio | Medio] | Min [s] | Max [S] | Relativo |
|---|---|---|---|---|
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 |
| Dominio | Media [MS] | Min [MS] | Max [MS] | Relativo |
|---|---|---|---|---|
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) o zig (estable)Rust con interfaz similar a GDU (y NCDU)RustRust que muestra árboles como estructuras del uso de discoRust que muestra árboles como estructuras de uso de disco Icono HDD creado por Nikita Golubev - Flaticon