--- categories: utilities sysadmin storage title: Howto Duc ... * Documentation : [Duc](http://duc.zevv.nl) 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](https://dev.yorhel.nl/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](/duc.png) #### 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](/duc2.png) #### 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](Apache) 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 ~~~