RE : RE : Corbeille Samba 3.0

トップ ページ

このメッセージに返信
著者: JULLIEN Lionel
日付:  
To: 'Edgar Bonet', Liste Guilde
新しいトピック: Re: Corbeille Samba 3.0
題目: RE : RE : Corbeille Samba 3.0
Alors là ça m'interresse !

Je connaisait pas le fonction exact de tmpwatch :)

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

find /home -ctime 3 -type f '*'_Corbeille'*' -print0 | xargs -0 -n1 rm

Le problème de cette derniere c'est qu'elle ne supprime pas les dossiers
(-type f)...

Donc il faut que je cummule plusieures commandes...

Ci-joint le script en question :

#!/bin/bash

# Description: Tache planifiée supprimant les fichiers dans les corbeilles
#              des services. Uniquement les fichiers plus vieux que $TOO_OLD
#              sont supprimés.


# Variables
#---------------------------------------------------------------------------
-
# dossier Corbeille
TRASHDIR=_Corbeille

# Unité de temps (utilisée pour définir l'ancienneté des fichiers (en
jours))
# Si les fichiers sont plus récent que TOO_OLD, on ne les efface pas.
TOO_OLD=0

# Chemins où l'on va rechercher
HOMEROOT=/home/samba/data/services

# Fin des variables
#--------------------------------------------------------------------------

# On cherche les fichiers vides
empties=`find $HOMEROOT -empty -type f | grep $TRASHDIR`

# On cherche les fichiers qui sont trop vieux
fogies=`find $HOMEROOT -ctime $TOO_OLD -type f | grep $TRASHDIR`

if [ "$empties" != "$fogies" ]; then

# NOTE: les doubles quotes sont utilisés afin de manier correctement les
fichiers
#       ayant un nom avec des caractères spéciaux (accents, parenthèses,
espaces...)


echo Les fichiers suivant ont été supprimés des corbeilles.
echo ""

# Actions pour les fichiers vides
for empty in "$empties"; do
echo "$empty"
find $HOMEROOT -empty -type f -path '*'$TRASHDIR'*' -print0 | xargs -0 -n1
rm
done

# Action pour les fichiers à date expirée
for fogie in "$fogies"; do
echo "$fogie"
find $HOMEROOT -ctime $TOO_OLD -type f -path '*'$TRASHDIR'*' -print0 | xargs
-0 -n1 rm
done

else
echo "Aucun fichier à supprimer."
echo ""

# On cherche les dossiers qui sont vides
#directories=`find $HOMEROOT -empty -type d | grep $TRASHDIR`

#for directory in "$directories"; do
#echo "$directory"
#find $HOMEROOT -empty -type d -path '*'$TRASHDIR'*' -print0 | xargs -0 -n1
chown root
#find $HOMEROOT -type d -path '*'$TRASHDIR'*' -print0 | xargs -0 -n1 rm -rf
#done

fi


Toute la dernière partie (pour les dossiers) ne fonctionne pas correctement
: elle me supprime tous les dossiers dans les corbeilles, mais également les
dossiers corbeille !
C'est pour ça que je l'ai commenté ;)

Donc si vous pouvez m'aider à adapter ce script... Peut être en utilisant
tmpwatch dans la commande find....

Bon week-end à tous !

-----Message d'origine-----
De : Edgar Bonet [mailto:guilde@edgar-bonet.org]
Envoyé : vendredi 25 février 2005 13:34
À : Liste Guilde
Objet : Re: RE : Corbeille Samba 3.0


Le vendredi 25 février, JULLIEN Lionel a écrit :
> > cron + tmpwatch ?
>
> J'y est pensé mais le prob c'est que j'ai tout un tas de fichiers avec
> différentes extension (doc, xls, ppt......) + des répertoires.....


Je ne comprends pas ton problème. tmpwatch ne sait même pas ce que le mot «
extension » signifie. Pour lui un fichier est un fichier, et si ça fait trop
longtemps que personne ne l'a regardé, il l'efface. Et quand il tombe sur un
répertoire, il y descend récursivement.

Si tu sais construire la liste de ces corbeilles, par exemple avec find,

    find /home <critères qui vont bien> | xargs tmpwatch -f 240


efface tous les fichiers qui sont dans les corbeilles et qui n'ont pas vu
d'accès en lecture depuis dix jours. Et il efface aussi les répertoires qui
se sont pour le coup retrouvés vides.

-- 
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