Re: Corbeille Samba 3.0

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: Liste Guilde
Anciens-sujets: RE : RE : Corbeille Samba 3.0
Sujet: Re: Corbeille Samba 3.0
Le vendredi 25 février, JULLIEN Lionel a écrit :
> Je connaisait pas le fonction exact de tmpwatch :)


man tmpwatch.

> J'ai trouvé un script bash (que j'ai adapté) qui utilise le même type de
> commande : [...]


Ça devient compliqué... Que penses-tu de ceci ?

8<----------------------------------------------------------------------
#!/bin/bash

# On ne nettoie qu'en dessous de ce répertoire
HOMEROOT=/home/samba/data/services

# Tout répertoire qui porte ce nom est une poubelle
TRASHDIR=_Corbeille

# Tout ce qui n'a pas été vu depuis plus de $TOO_OLD heures est à jeter
TOO_OLD=72

# Le travail : find liste les corbeilles, tmpwatch les nettoie
find $HOMEROOT -type d -name $TRASHDIR -prune -print0 | \
    xargs -0 tmpwatch -cfv $TOO_OLD
8<----------------------------------------------------------------------


Quelques commentaires :

tmpwatch est assez malin pour effacer les répertoires vides qui sont
dans les corbeilles (et qui satisfont le critère d'âge) mais pas les
corbeilles elles-mêmes.

Mettre TOO_OLD=0 me paraît douteux. L'intérêt d'une corbeille par
rapport à un brutal rm est que les fichiers qui y atterrissent y trouvent
un certain répit. Si tu mets TOO_OLD=0, le fichier qui a le malheur d'y
tomber juste avant le passage du script est mort. J'imagine bien que le
script ne va pas tourner toutes les cinq minutes, mais il me paraît plus
raisonnable de fixer un bon délai de répit (par. ex. quelques jours,
moins si tu es court en disque) et de faire tourner le script avec une
périodicité sensiblement plus courte que ce délai. C'est du moins l'idée
qu'avaient en tête ceux qui ont écrit tmpwatch et cela me semble une
bonne idée.

La commande find sert à établir la liste des corbeilles. Si celle-ci ne
change pas, tu peux la mettre dans un fichier et remplacer

    find ... | xargs -0 tmpwatch ...


par

    xargs -0 tmpwatch ... < liste_des_corbeilles


voire même

    tmpwatch ... $corbeilles


si tu mets la liste dans une variable, et qu'il n'y a pas d'espaces dans
les noms des répertoires en amont des corbeilles.

Par défaut tmpwatch utilise atime comme critère d'âge. Avec un tel
critère il faut faire attention à ne pas lire systématiquement le
contenu des répertoires, sinon ils ne seront pas effacé. Donc l'option
-prune de find est vraiment nécessaire. Si tu utilises plutôt le ctime
comme critère (option -c de tmpwatch), ce qui semble plus approprié pour
une corbeille, -prune n'est pas indispensable, mais il ne fait pas de
mal : c'est une optimisation.

Si tu veux faire des règles différentes pour les fichiers vides et ceux
qui ne le sont pas, tu vas te compliquer la vie pour pas grand chose :
les fichiers vides ne prennent pas beaucoup de place et ils vieillissent
comme les autres.

De façon générale, si la politique de tmpwatch (qui consiste grosso modo
à appliquer le même critère d'âge à tout le monde) ne te convient pas,
tu vas être obligé d'écrire ta propre version de cet utilitaire. C'est
un peu ce que tu as commencé à faire avec ton script.

Ciao,

Edgar.

PS: Ton mailer est pénible à ne pas mettre les In-Reply-To: et à ne pas
reconnaître Re: dans le titre.

-- 
Edgar Bonet           Maison : 04 76 21 29 16    Bureau : 04 76 88 10 96
3 rue Jean Prévost    Mobile : 06 77 19 79 39    Fax    : 04 76 88 11 91
38000 Grenoble        guilde@???     www.edgar-bonet.org