# Place disque

`clipper`, le serveur principal de l'ENS, héberge de nombreux comptes : ceux de tous les élèves, des jeunes archicubes, des magistériens et autres invités, ce qui représente un total de plus de 2000 comptes. Les comptes sont regroupés par année de promotion, toutes disciplines confondues.

Chaque promotion dispose d'une partition (sorte de disque dur virtuel) séparée sur laquelle est stockée ses données. Il n'y a pas de système de quotas par personne, mais la place totale occupée par une promotion est limitée... à la taille de la partition. Si une partition est pleine, plus personne ne peut enregistrer de données, rendant ainsi tout travail impossible.

Le courrier électronique est, lui, stocké dans `/var/mail`. Si `/var/mail` est plein, plus personne ne peut envoyer ni recevoir de courrier.

Faire attention à l'espace disque que l'on prend est donc à la fois une nécessité, et une obligation (la charte des moyens informatiques que vous avez signée l'exige). Deux outils vous permettent de contrôler la taille de vos fichiers et celle de votre compte : `du` et `df`.

## Taille de fichiers et de répertoires : `du`

### Connaître la taille d'un répertoire

La commande `du` (disk usage) indique la taille de vos répertoires et sous-répertoires. Sur certains systèmes, `du` indique la taille des fichiers en blocs et non en Ko, prenez donc le réflexe d'ajouter l'option `-k` (kilobytes).

L'option `-h` est aussi très utile : elle donne des résultats beaucoup plus lisibles par un humain (la taille est exprimée en Ko, Mo ou Go quand c'est possible).

À noter : certaines commandes basiques comme `ps` ou `du` n'ont pas le même comportement sur les stations Sun (sous Solaris) et les PC (sous Linux). Reportez-vous aux pages de man (l'aide en ligne) pour vérifier quelles sont les options disponibles sur chaque système.

Par exemple, voici le contenu du répertoire « histoire » de Toto (arborescence donnée dans le cours sur les répertoires) :

    clipper ~ $ du -k histoire
    1973    histoire/maitrise
    127     histoire/sources/AN
    36      histoire/sources/divers
    30      histoire/sources/etudes
    38      histoire/sources/godefroy
    335     histoire/sources/images
    62      histoire/sources/memoires/saint-simon
    161     histoire/sources/memoires
    141     histoire/sources/mscrits
    913     histoire/sources
    2023    histoire/dea
    4910    histoire

La dernière ligne indique la taille totale du répertoire « histoire », avec tout ce qu'il contient, soit 4 910 Ko.

Ajouter l'option `-h` (comme « human readable ») donne des résultats plus lisibles :

    brick ~ $ du -h histoire
    2.0M    histoire/maitrise
    127K    histoire/sources/AN
    36K     histoire/sources/divers
    30K     histoire/sources/etudes
    38K     histoire/sources/godefroy
    335K    histoire/sources/images
    62K     histoire/sources/memoires/saint-simon
    161K    histoire/sources/memoires
    141K    histoire/sources/mscrits
    913K    histoire/sources
    2.0M    histoire/dea
    4.8M    histoire

Note : souvenez-vous que les ordinateurs comptent de manière binaire et non décimale. Un kilo-octets vaut donc 1 024 octets, et non 1 000. Un méga-octet vaut 1 024 Ko et non 1 000, et donc en tout 1 048 576 octets. Diviser par 1 000 est une approximation commode mais elle peut donner des idées assez inexactes quand on considère des données très volumineuses.

### Connaître la taille totale de son compte

L'option `-s` permet de n'afficher que la dernière ligne, c'est-à-dire le total de tous les répertoire et sous-répertoires, sans tous les détails. Ainsi, pour connaître la taille de votre compte, faites un `du -sk` à la racine de votre compte :

    clipper ~ $ du -sk
    98280   .

Encore une fois, si vous êtes sur un PC, utiliser l'option `-h` ne fera pas de mal :

    brick ~ $ du -sh
    96M     .

### Connaître la taille d'un fichier

L'option `-a` demande l'affichage la taille de tous les fichiers contenus dans vos répertoires et sous-répertoires. Ici, toujours pour le répertoire « histoire » de Toto :

    clipper ~ $ du -ak histoire
    200     histoire/maitrise/maitrise.dvi.bz2
    29      histoire/maitrise/1.html
    6       histoire/maitrise/maitrise.tex
    18      histoire/maitrise/intro.tex
    29      histoire/maitrise/1a.tex
    11      histoire/maitrise/conclu.tex
    112     histoire/maitrise/maitrise.idx
    22      histoire/maitrise/A.tex
    27      histoire/maitrise/biblio.tex
    10      histoire/maitrise/maitrise.toc
    (...)

Pour connaître la taille d'un fichier précis, il suffit d'indiquer à `du -ak` le nom de votre fichier (`ls -s` fait la même chose) :

    clipper ~ $ du -ak histoire/maitrise/maitrise.tex
    6       histoire/maitrise/maitrise.tex

### Application : quels sont les plus gros fichiers de votre compte ?

En utilisant `du -ak` et le en combinant avec d'autres commandes, vous pouvez savoir précisément quels sont les fichiers et les répertoires qui prennent le plus de place sur votre compte.

    clipper ~ $ du -ak | sort -nr | head -10
    98280   .
    22007   ./www
    1658    ./Mail
    9637    ./www/hist
    5005    ./www/hist/maitrise
    4910    ./histoire
    3941    ./Mail/archives
    3757    ./www/philo/
    3274    ./www/philo/cours
    3112    ./www/philo/cours/hegel
    2841    ./prive

Vous savez donc que sur ce compte, le répertoire le plus volumineux est `www` (le répertoire qui contient la page Web), puis `Mail` (qui contient les dossiers de votre boîte aux lettres). À l'intérieur de `www`, le répertoire le plus gros est `www/hist` dont `www/hist/maitrise` occupe la plus grande part, etc.

#### Explications

1. `du -ak` : on demande la taille de tous les fichiers et répertoires du compte, en kilo-octets.
2. `|` : c'est ce qu'on appelle en anglais un pipe, un tuyau. Ce « tuyau » sert à envoyer à une autre commande le résultat de `du -ak`.
3. `sort -nr` : la commande `sort` sert à trier des données, en l'espèce on lui demande de trier par taille (`-n`) puis de classer par ordre décroissant (`-r`) la liste des fichiers et de leur taille (donnée par `du -ak`).
4. après un autre pipe, on utilise la commande `head`, qui affiche seulement le début d'un fichier. En l'espèce, on lui demande de ne montrer que les 10 premières lignes du résultat des opérations précédentes.

Le résultat de toutes ces opérations un peu complexes, c'est que vous avez affiché les 10 plus gros répertoires ou fichiers (les deux confondus) de votre compte. Pour ajuster le nombre de fichiers à afficher, changez le nombre après `head`.

Si vous voulez conserver quelque part la liste de vos gros fichiers, par exemple si vous demandez une longue liste, utilisez une redirection (`>`) :

    clipper ~ $ du -ak | sort -nr | head -50 > gros_fichiers.txt

Le résultat de votre tri sera conservé dans le fichier `gros_fichiers.txt` que vous pourrez étudier à tête reposée.

### Application : quelle est la taille de votre boîte aux lettres ?

Nous allons de nouveau utiliser le mécanisme des pipes décrit ci-dessus. Toutes les boîtes aux lettres des gens ayant un compte sur `clipper` sont dans le répertoire `/var/mail`. À chaque utilisateur correspond le fichier `/var/mail/login` (remplacez login par votre identifiant) : c'est le contenu de votre boîte aux lettres principale.

    clipper ~ $ ls -s /var/mail | grep toto
    1142    /var/mail/toto

Cette fois-ci, il s'agit de :

1. demander la taille des fichiers contenus dans le répertoire `/var/mail` ;
2. chercher avec la commande `grep` le fichier qui vous correspond.

La boîte mail de l'utilisateur `toto` fait donc 1 142 Ko. Pour savoir qui ont les plus grosses boîtes aux lettres :

    clipper ~ $ ls -s /var/mail | sort -nr | head -10
    161704 blevy
    116728 derrida
     75888 hcartan
     64912 raron
     51744 pasteur
     45368 htaine
     44720 poincare
     44712 cpeguy
     44336 rthom
     43896 egalois

## Taille d'une partition : `df`

La commande `df` (disk free) indique la place disponible sur les partitions montées.

Comme pour `du`, sur certains systèmes il faut ajouter l'option `-k` (kilobytes), pour être sûr que le résultat sera en Ko et non en blocs.

Note : l'explication complète de `df` fait appel à des notions délicates sur la façon dont les fichiers sont organisés, d'autant que nous sommes en réseau (par NFS). On n'entrera donc pas dans les détails dans ce topo. Dans un premier temps, remplacez le mot « partition » par « disque (dur) » et ça suffira largement. Si vous êtes curieux, vous pouvez aller lire Concept : place-disque (article du numéro 6 du Hublot, avril 2000).

`df` affiche un tableau, avec une ligne par point de montage. Les colonnes sont respectivement le système de fichiers, sa taille, la place utilisée, la place libre, la proportion d'espace utilisé, et le point de montage. Voici un exemple presque complet :

    clipper ~ $ df -h
    Filesystem            Size  Used Avail Use% Mounted on
    (...)
    /dev/dsk/c0t8d0s1     4.2G  3.9G  261M  94% /users/95
    /dev/dsk/c0t9d0s0     8.4G  7.7G  604M  93% /users/97
    /dev/dsk/c0t0d0s5     2.5G  319M  2.1G  13% /users
    /dev/dsk/c0t10d0s1    4.4G  2.4G  2.0G  55% /users/guests
    /dev/dsk/c0t10d0s3    8.4G  5.1G  3.2G  62% /var/mail
    /dev/dsk/c0t8d0s3     4.2G  3.7G  421M  91% /users/96
    /dev/dsk/c0t8d0s6     2.0G  974M  932M  52% /users/94
    /dev/dsk/c0t8d0s4     2.0G  841M  1.1G  44% /var/forum2
    /dev/dsk/c0t12d0s1     12G   11G  549M  96% /users/99
    /dev/dsk/c0t11d0s0     12G   11G  605M  95% /users/00
    /dev/dsk/c0t11d0s1     12G  8.8G  2.4G  79% /users/98
    /dev/dsk/c0t12d0s0     12G   11G  489M  96% /users/01
    /dev/dsk/c0t11d0s3     12G   11G  838M  93% /users/02
    /dev/dsk/c0t12d0s3     12G  6.4G  4.8G  58% /users/03
    (...)

Pour connaître simplement l'état d'une partition donnée, on utilise `df -h <nom de la partition>`. Chaque promotion ayant une partition, ceci vous permet de repérer facilement la vôtre :

    clipper ~ $ df -h /var/mail
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/dsk/c0t10d0s3    8.4G  5.1G  3.2G  62% /var/mail
    clipper ~ $ df -h /users/03
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/dsk/c0t12d0s3     12G  6.4G  4.8G  58% /users/03

Nous voyons donc qu'à l'heure où est écrite cette page, `/var/mail` est plein à 62 %, et `/users/03` est plein à 58 %. La situation est bonne. La situation est considérée comme critique quand on dépasse les 95 % : il suffit de plusieurs personnes qui stockent des images, de gros documents PDF, leur DEA, d'un programme emballé qui écrit sur le disque pour que 100 % de l'espace disque soit pris, rendant ainsi tout travail impossible pour cette promotion. Ceci arrive de temps à autres, et ce n'est vraiment pas drôle...

En cas d'urgence : si vous vous apercevez que le disque est plein à 99 % ou 100 %, prévenez le SPI (`spi@clipper`), qui prendra des mesures techniques (déplacement de fichiers, etc.). Prévenez également les Tuteurs, qui enverront un mail de rappel aux coupables (ceux qui ont les plus gros comptes).

## Recommandations

### Ne stockez pas n'importe quoi sur votre compte !

Votre compte est avant tout un outil de travail, pas un espace de stockage gratuit et illimité de mp3, DivX, photos de vacances et autres fichiers gourmands en place. Imaginez votre tête si vous ne pouviez pas travailler sur un mémoire urgent, parce qu'un zozo conserve l'intégrale de Village People sur son compte...

Même s'il n'y a pas de quotas, on considère généralement qu'il faut de bonnes raisons pour occuper plus de 100 Mo d'espace disque. « C'est ridicule, le disque dur de mon PC fait 100 Go ! », me direz-vous. Certes, mais `clipper` n'a pas les mêmes contraintes qu'une machine personnelle : le matériel est différent, et il y a des sauvegardes quotidiennes, imaginez le volume des données stockées !

### Rangez votre courrier

Votre mailbox ne devrait pas contenir plus de 50-60 courriers en attente, surtout s'ils contiennent des attachements. Il faut ranger votre courrier dans des dossiers (folders), ainsi ils seront stockés sur votre compte et non dans `/var/mail`. Pour savoir comment faire, consultez la documentation sur le courrier électronique, ou plus spécifiquement la page indiquant comment vider sa messagerie. Ajoutons qu'en plus, ranger son courrier est plus sûr : si votre lecteur de mail perd les pédales, vous n'aurez pas tout perdu.

### Faites le ménage chez vous

Première question à vous posez : ne conservez-vous pas des fichiers inutiles ou obsolètes ? Pas la peine de les garder ad vitam æternam sur le disque, dans ce cas. Compresser ou archiver vos fichiers fait économiser une place précieuse. Vous pouvez également supprimer des fichiers qui peuvent être recréés facilement (par exemple les fichiers `.dvi`, `.aux`, `.log`, `.toc` liés à LaTeX : en 5 secondes de compilation, vous pouvez les retrouver). Ces fichiers vous seront signalés par un courrier du « Démon mange-disque », chargé précisément de repérer ce genre de gros fichiers.

### Stockez ailleurs

`clipper` n'est pas votre seule et unique solution pour stocker vos données. Vous pouvez les stocker sur d'autres comptes de l'École : à Montrouge, en salle T pour les matheux... et sur votre ordinateur personnel si vous en avez un, bien sûr. Sous Unix et Linux, utilisez `scp` ; sous Windows, consultez la page des WinTuteurs sur le transfert de fichiers. Vous pouvez également utiliser FTP.

Auteur : Émilia Robin, Marie-Lan Nguyen.