wiki/HowtoDUC.md

174 lines
4.7 KiB
Markdown
Raw Normal View History

2018-02-28 17:47:29 +01:00
---
categories: utilities sysadmin storage
title: Howto Duc
...
2016-12-29 11:25:39 +01:00
2018-02-28 17:47:29 +01:00
* Documentation : <https://rawgit.com/zevv/duc/master/doc/duc.1.html>
2016-12-29 11:25:39 +01:00
2018-03-15 13:59:43 +01:00
[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.
2016-12-29 11:25:39 +01:00
## Installation
2018-03-15 13:59:43 +01:00
Un paquet est disponible à partir de Debian Stretch :
2016-12-29 11:25:39 +01:00
2018-03-02 10:48:18 +01:00
~~~
2018-03-01 17:57:00 +01:00
# apt install duc
2018-03-02 10:48:18 +01:00
~~~
2018-03-01 17:57:00 +01:00
2016-12-29 11:25:39 +01:00
## Utilisation
2018-03-02 10:33:14 +01:00
### Création de l'index
2016-12-29 11:25:39 +01:00
2018-03-17 14:55:25 +01:00
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`.
2016-12-29 11:25:39 +01:00
2018-03-15 13:59:43 +01:00
L'index n'est pas forcément rattaché à un seul chemin, on peut en indexer autant qu'on veut :
2016-12-29 15:47:13 +01:00
2016-12-29 11:25:39 +01:00
~~~
2018-03-02 10:14:57 +01:00
$ duc index -d /tmp/duc.idx /var/
$ duc index -d /tmp/duc.idx /usr/
2016-12-29 11:25:39 +01:00
~~~
2018-03-02 10:35:25 +01:00
> *Note* : La génération de l'index peut être très longue et peut prendre de la place si vous avez beaucoup de données. Il est peut être intéressant de rajouter le paramètre `-p` pour suivre la progression et de vérifier que la partition soit suffisamment grande.
2016-12-29 11:25:39 +01:00
2018-03-15 13:59:43 +01:00
### Consulter l'index
2018-03-02 10:14:57 +01:00
2018-03-02 10:33:14 +01:00
#### Voir les informations de l'index
2017-01-03 17:43:16 +01:00
2017-01-03 17:42:48 +01:00
~~~
2018-03-02 10:14:57 +01:00
$ 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
2017-01-03 17:42:48 +01:00
~~~
2018-03-02 10:33:14 +01:00
#### Lister le contenu de l'index
2017-01-03 17:46:35 +01:00
~~~
2018-03-02 10:14:57 +01:00
$ 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
2017-01-03 17:46:35 +01:00
2018-03-02 10:14:57 +01:00
$ 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
2018-03-02 10:14:57 +01:00
$ 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
~~~
2018-03-02 10:33:14 +01:00
#### Lister le contenu de l'index avec une interface ncurses
2018-03-02 10:14:57 +01:00
2018-03-15 13:59:43 +01:00
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.
2016-12-29 11:25:39 +01:00
~~~
2018-03-02 10:14:57 +01:00
# duc ui -d /tmp/duc.idx /usr
2016-12-29 11:25:39 +01:00
~~~
2018-03-01 18:05:50 +01:00
![Interfaces ncurses](/duc.png)
2018-03-02 10:33:14 +01:00
#### Lister le contenu de l'index avec une interface graphique
2016-12-29 11:25:39 +01:00
2018-03-02 10:28:56 +01:00
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.
2016-12-29 11:25:39 +01:00
~~~
2018-03-02 10:14:57 +01:00
$ duc gui -d /tmp/duc.idx /usr
2016-12-29 11:25:39 +01:00
~~~
2018-03-02 10:14:57 +01:00
![Le GUI de Duc](/duc2.png)
2018-03-02 10:33:14 +01:00
#### Lister le contenu de l'index en générant une image
2018-03-02 10:24:26 +01:00
2018-03-15 14:31:17 +01:00
On peut générer une image PNG, utile pour l'envoyer à quelqu'un d'autre par exemple :
2018-03-02 10:24:26 +01:00
2018-03-02 10:48:18 +01:00
~~~
2018-03-02 10:24:26 +01:00
$ duc graph -d /tmp/duc.idx -o /tmp/duc.png -l8 -s 1920 /usr
2018-03-02 10:48:18 +01:00
~~~
2018-03-02 10:24:26 +01:00
2018-03-02 10:44:07 +01:00
Les paramètres intéressants sont :
2018-03-15 14:26:55 +01:00
- `-l` nombre de sous-répertoires à afficher ;
- `-o` chemin de sortie de l'image ;
2018-03-15 14:31:17 +01:00
- `-s` largeur de l'image.
2018-03-02 10:44:07 +01:00
2018-03-02 10:33:14 +01:00
#### Lister le contenu de l'index avec un script CGI
2016-12-29 11:25:39 +01:00
2018-03-01 18:02:12 +01:00
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.
2016-12-29 11:25:39 +01:00
~~~
#!/bin/sh
2018-03-02 10:40:06 +01:00
/usr/bin/duc cgi -d /var/cache/duc.idx --list
2016-12-29 11:25:39 +01:00
~~~
~~~
# chmod 755 /usr/lib/cgi-bin/duc.cgi
# chown www-data: /usr/lib/cgi-bin/duc.cgi
2018-03-02 10:40:06 +01:00
# chmod 640 /var/cache/duc.idx
# chgrp www-data /var/cache/duc.idx
2016-12-29 11:25:39 +01:00
~~~
Il faudra ensuite utiliser un serveur Web comme [HowtoApache](Apache) pour y accéder en ajoutant ces directives :
~~~
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
</Directory>
ScriptAlias /duc /usr/lib/cgi-bin/duc.cgi
~~~
2018-03-02 10:14:57 +01:00
### Plomberie
2018-03-02 10:24:26 +01:00
Quelques options utiles :
2018-03-02 10:14:57 +01:00
- `-H` : Compter les mêmes inodes une seule fois ;
- `-e` <regex> : Exclure les fichiers correspondant (ne correspond que au nom du fichier et non de son PATH complet) ;
- `-p` : Affiche la progression de l'indexation.
2018-03-26 16:35:08 +02:00
- `-x` : Comme pour la commande *du*, limite au FS analysé
2018-03-02 10:14:57 +01:00
~~~
# duc index -p -H -e "*.log*" -d /backup/duc.idx /backup/jails
# duc index -p -H -d /backup/duc.idx /backup/jails
~~~
2018-03-15 14:28:13 +01:00
Pour exclure un répertoire (par exemple `backup/` contenant de nombreux fichiers), se placer dessus et faire :
2018-03-02 10:14:57 +01:00
~~~
# duc index -p -e "backup" -d duc.idx .
~~~
2018-03-26 16:35:08 +02:00
2018-03-02 10:30:25 +01:00
#### Cron
2016-12-29 11:25:39 +01:00
2018-03-02 10:14:57 +01:00
Il peut être judicieux de créer un cron pour faire une indexation journalière, très pratique quand couplé avec l'interface CGI.
2016-12-29 11:25:39 +01:00
~~~
2018-03-02 10:40:06 +01:00
30 6 * * * duc index -q -d /var/cache/duc.idx / && chmod 640 /var/cache/duc.idx && chgrp www-data /var/cache/duc.idx
2018-03-15 13:59:43 +01:00
~~~