Login Logout

Howto Duc

Duc est un outil qui permet d’analyser l’espace disque en créant un index, que l’on pourra ensuite visualiser avec une interface texte ou ncurses, un graphique, une GUI ou en CGI.

Installation

Un paquet est disponible à partir de Debian Stretch :

# apt install duc

Utilisation

Création de l’index

La première chose à faire est de créer un index, c’est la partie qui analyse l’espace disque pour ensuite l’afficher de différentes manières. Par défaut l’index sera créé dans $HOME/.duc.db, si l’on veut changer le chemin de l’index il faudra utiliser la variable d’environnement DUC_DATABASE ou spécifier le chemin avec -d.

L’index n’est pas forcément rattaché à un seul chemin, on peut en indexer autant qu’on veut :

$ duc index -d /tmp/duc.idx /var/
$ duc index -d /tmp/duc.idx /usr/

Note : La génération de l’index peut être très longue si vous avez beaucoup de données. Il peut être intéressant de rajouter le paramètre -p pour suivre la progression.

Consulter l’index

Voir les informations de l’index

$ duc info -d /tmp/duc.idx 
Date       Time       Files    Dirs    Size Path
2018-03-02 09:49:38   22.5K    2.4K    2.2G /var
2018-03-02 09:49:42  268.0K   24.1K    8.2G /usr

Lister le contenu de l’index

$ duc ls -d /tmp/duc.idx /usr     
  4.3G lib
  3.0G share
606.2M bin
210.5M src
 66.4M include
 35.3M sbin
 20.1M local
  6.4M lib32
  2.2M libexec
  1.7M games
  4.0K etc

$ duc ls -d /tmp/duc.idx /usr/bin/ | head
 29.9M hkt
 28.3M hokey
 24.2M node
 19.6M hot
 17.0M shellcheck
 15.7M mysql_embedded
 14.7M fwbuilder
 11.6M audacity
 11.1M rawtherapee
 10.4M qemu-system-x86_64

$ duc ls -d /tmp/duc.idx /var/log | head  
197.2M atop
 30.4M daemon.log.1
 24.1M daemon.log
 17.1M installer
  5.4M syslog.1
  2.7M messages.1
  2.4M vbox-install.log
  2.1M syslog
  1.9M kern.log.1
  1.7M ufw.log.1

Lister le contenu de l’index avec une interface ncurses

L’interface ncurses est semblable à celle de l’outil ncdu. La touche h permettra d’afficher l’aide pour comprendre comment naviguer et interagir avec cette interface.

# duc ui -d /tmp/duc.idx /usr
Interfaces ncurses

Interfaces ncurses

Lister le contenu de l’index avec une interface graphique

Si on est sur un poste ayant un serveur X (ou en ssh -X), on pourra utiliser cette interface et utiliser la souris. Contrairement à l’interface ncurses on n’a pas d’aide en appuyant sur h, il faudra voir la liste des raccourcis dans le manuel.

$ duc gui -d /tmp/duc.idx /usr
Le GUI de Duc

Le GUI de Duc

Lister le contenu de l’index en générant une image

On peut générer une image PNG, utile pour l’envoyer à quelqu’un d’autre par exemple :

$ duc graph -d /tmp/duc.idx -o /tmp/duc.png -l8 -s 1920 /usr

Les paramètres intéressants sont :

  • -l nombre de sous-répertoires à afficher ;
  • -o chemin de sortie de l’image ;
  • -s largeur de l’image.

Lister le contenu de l’index avec un script CGI

Il suffit de créer ce script sh dans /usr/lib/cgi-bin/duc.cgi, de donner les bons droits et d’y accéder.

#!/bin/sh
/usr/bin/duc cgi -d /var/cache/duc.idx --list
# chmod 755 /usr/lib/cgi-bin/duc.cgi
# chown www-data: /usr/lib/cgi-bin/duc.cgi
# chmod 640 /var/cache/duc.idx
# chgrp www-data /var/cache/duc.idx

Il faudra ensuite utiliser un serveur Web comme HowtoApache pour y accéder.

Plomberie

Quelques options utiles :

  • -H : Compter les mêmes inodes une seule fois ;
  • -e : Exclure les fichiers correspondant (ne correspond que au nom du fichier et non de son PATH complet) ;
  • -p : Affiche la progression de l’indexation.
  • -x : Comme pour la commande du, limite au FS analysé
# duc index -p -H -e "*.log*" -d /backup/duc.idx /backup/jails
# duc index -p -H -d /backup/duc.idx /backup/jails 

Pour exclure un répertoire (par exemple backup/ contenant de nombreux fichiers), se placer dessus et faire :

# duc index -p -e "backup" -d duc.idx .

Cron

Il peut être judicieux de créer un cron pour faire une indexation journalière, très pratique quand couplé avec l’interface CGI.

30 6  * * * duc index -q -d /var/cache/duc.idx / && chmod 640 /var/cache/duc.idx && chgrp www-data /var/cache/duc.idx