
Analyseur d'utilisation du disque assez rapide écrit en Go.
Le GDU est principalement destiné aux disques SSD où il peut utiliser pleinement le traitement parallèle. Cependant, les disques durs fonctionnent également, mais le gain de performance n'est pas si énorme.
Dirigez-vous vers la page des versions et téléchargez le binaire de votre système.
Utilisation de 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
Voir la page d'installation pour d'autres moyens d'installer GDU sur votre système.
Ou vous pouvez utiliser GDU directement 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
GDU a trois modes: interactif (par défaut), non interactif et exportation.
Le mode non interactif est démarré automatiquement lorsque TTY n'est pas détecté (en utilisant Go-Isatty), par exemple si la sortie est en cours de tuyau dans un fichier, ou si elle peut être démarrée explicitement en utilisant un drapeau.
Le mode d'exportation (Flag -o ) sortira toutes les données d'utilisation en tant que JSON, qui peuvent être ouvertes plus tard à l'aide de l'indicateur -f .
Les liens durs ne sont comptés qu'une seule fois.
Les fichiers et répertoires peuvent être préfixés par un drapeau à un caractères avec une signification suivante:
! Une erreur s'est produite lors de la lecture de ce répertoire.
. Une erreur s'est produite lors de la lecture d'un sous-répertoire, la taille ne peut pas être correcte.
@ Le fichier est un lien symbolique ou un socket.
H Le même fichier était déjà compté (lien dur).
Le répertoire e est vide.
GDU peut lire (et écrire) le fichier de configuration YAML.
$HOME/.config/gdu/gdu.yaml et $HOME/.gdu.yaml sont vérifiés par défaut pour la présense du fichier de configuration.
Voir la liste complète de toutes les options de configuration.
echo "no-color: true" >> ~/.gdu.yaml
sorting:
by: name // size, name, itemCount, mtime
order: desc
echo "change-cwd: true" >> ~/.gdu.yaml
gdu --write-config
Il existe des moyens de savoir comment les terminaux peuvent être colorés. Certaines primitives GDU (comme le texte de base) addapt à différents schémas de couleurs, mais la ligne sélectionnée / surlignée ne le fait pas.
Si le look par défaut n'est pas suffisant, il peut être modifié dans le fichier de configuration, par exemple:
style:
selected-row:
text-color: black
background-color: "#ff0000"
GDU peut supprimer des éléments en arrière-plan, ne bloquant donc pas l'interface utilisateur pour des travaux supplémentaires. Pour activer:
echo "delete-in-background: true" >> ~/.gdu.yaml
Les éléments de répertoire peuvent également être supprimés en parallèle, ce qui pourrait augmenter la vitesse de suppression. Pour activer:
echo "delete-in-parallel: true" >> ~/.gdu.yaml
GDU essaie d'équilibrer les performances et l'utilisation de la mémoire.
Lorsque moins de mémoire est utilisée par GDU que la mémoire libre totale de l'hôte, la collecte des ordures est désactivée pendant la phase d'analyse complètement pour gagner une vitesse maximale.
Sinon, GC est activé. Plus la mémoire est utilisée et moins la mémoire est gratuite, plus le GC se produira souvent.
Si vous voulez un contrôle manuel sur la collection des ordures, vous pouvez utiliser --const-gc / -g Flag. Il exécutera la collecte des ordures pendant la phase d'analyse avec un niveau d'agressivité constant. En conséquence, l'analyse sera environ 25% plus lente et consommera environ 30% de mémoire en moins. Pour modifier le niveau, vous pouvez définir la variable d'environnement GOGC pour spécifier la fréquence à laquelle la collection d'ordures se produira. Une valeur inférieure (que 100) signifie que GC fonctionnera plus souvent. Des moyens plus élevés moins souvent. Le nombre négatif arrêtera GC.
Exemple exécutant GDU avec GC constant, mais pas si agressif que par défaut:
GOGC=200 gdu -g /
GDU peut stocker les données d'analyse pour un stockage de valeur clé persistante au lieu de la mémoire. GDU fonctionnera beaucoup plus lent (environ 10x) mais il devrait utiliser beaucoup moins de mémoire (lors de l'utilisation également du petit GOGC). GDU peut également rouvrir avec les données enregistrées. Actuellement, seul BadgerDB est pris en charge comme le stockage de valeurs de clé (intégrée).
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 peut collecter des données de profilage lorsque l'indicateur --enable-profiling est défini. Les données sont fournies via le serveur HTTP intégré sur URL http://localhost:6060/debug/pprof/ .
Vous pouvez ensuite utiliser EG go tool pprof -web http://localhost:6060/debug/pprof/heap pour ouvrir le profil de tas sous forme d'image SVG dans votre navigateur Web.
Des repères ont été effectués sur le répertoire 50g (répertoires 100K, 400k fichiers) sur 500 Go de SSD en utilisant Hyperfine. Voir la cible benchmark dans Makefile pour plus d'informations.
Le cache du système de fichiers a été effacé à l'aide sync; echo 3 | sudo tee /proc/sys/vm/drop_caches .
| Commande | Moyens] | Min [s] | Max [s] | Relatif |
|---|---|---|---|---|
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 |
| Commande | Moyenne [MS] | Min [ms] | Max [ms] | Relatif |
|---|---|---|---|---|
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 pur (LTS) ou zig (stable)Rust avec interface similaire à GDU (et NCDU)RustRust montrant des structures d'arbre à utiliser le disqueRust montrant des structures arborescentes d'utilisation du disque Icône du disque dur créé par Nikita Golubev - Flaticon