[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: commande en console, crontab et archivemail



* Nicolas C. <Bounga-NO_SPAM@altern.org> [2003-01-06 17:27] :
> Le lundi 06 janvier 2003 à 17:12, Frédéric Bothamy écrivait :
> 
> > Tu as pas mal de chance, je viens de passer mon samedi à me mitonner
> > un archivage des mails par mois avec archivemail. :-) (de toute façon,
> > il neigeait)
> 
> Et il est disponible quelque-part ton script ?

Pas spécialement, mais comme il est très petit, je peux le poster ici
sans problème particulier.

Voilà (on peut enlever les echo, ils ne servent qu'à envoyer un
rapport d'activité de l'exécution, la création des noms d'archives
pourrait être automatisée, mais pas avec la version de archivemail de
woody) :

####

#!/bin/sh
#
# Archivage des courriers

#set -x
set -e

#QUIET="--quiet"
QUIET=
REP_MAIL=$HOME/Mail
REP_ARCHIVE=$HOME/Mail/Archives/
#DEBUG="--dry-run"
SUFFIXE="_archive"
DAYS=31

ARCMAIL="/usr/bin/archivemail --preserve-unread --output-dir=$REP_ARCHIVE --days=$DAYS $DEBUG "

for i in $(find $REP_MAIL -type f -maxdepth 1); do
	echo "$ARCMAIL $QUIET $i"
	$ARCMAIL $QUIET $i
	if [ $? -eq 0 -a -f $REP_ARCHIVE`basename $i`$SUFFIXE.gz ]; then
		echo Déplacement de $REP_ARCHIVE`basename $i`$SUFFIXE.gz en $REP_ARCHIVE`basename $i`_`date --date="$DAYS days ago" '+%Y%m%d_%H%M'`.gz
		mv $REP_ARCHIVE`basename $i`$SUFFIXE.gz $REP_ARCHIVE`basename $i`_`date --date="$DAYS days ago" '+%Y%m%d_%H%M'`.gz
	fi
done

####

Entrée dans la crontab de l'utilisateur (2h tous les 1er de chaque
mois) :

# Archive les vieux courriers
0 2 1 * * $HOME/bin/archivemail

####

On peut également utiliser le script pour archiver par mois une grosse
boîte aux lettres en faisant varier DAYS (61, 92, etc., valeur à
calculer) et en relançant le script plusieurs fois.

Fred



Reply to: