Le 14/11/04 � 19:03, [EMAIL PROTECTED] �crivait:

> Si chaque fois est suite � une action d'un op�rateur humain les d�lais de grep
> sont raisonnables. je viens de faire un test (portable PIII 500Mhz, 512 Mo) : 
> $ time grep -e 'zzzzzzzz' *
> 
> real  0m0.071s
> user  0m0.030s
> sys   0m0.040s
> $ pwd
> /usr/share/doc/postgresql-doc/html
> $ wc -l *|grep total
>  329529 total
> $ du -hs
> 6,4M  .

Le script est execut� une fois par semaine, le fichier de 14000 lignes
est cr�� � chaque fois et correspond aux 14000 paquets de la Sarge.

Le but est de suuprimer les paquets obsol�tes dans le cache de
apt-proxy. Voici o� j'en suis arriv�

=========== cut here ===============================
#!/bin/sh 

# supprime tous les packages obsol�tes (non r�f�renc�s dans les fichiers
# Packages) dans le cache d'Apt-proxy

TMPFILE=`mktemp -t purge.XXXXXX`
trap "rm -f $TMPFILE" 0 1 2 5 15

MOTIF="^Filename: "

# r�cup�re la valeur de APT_PROXY_CACHE
APT_PROXY_CACHE=`grep "^APT_PROXY_CACHE=" /etc/apt-proxy/apt-proxy.conf | \
  cut -d = -f 2`

COUNT=0

for H in `ls $APT_PROXY_CACHE`; do
  HOST="$APT_PROXY_CACHE/$H"
  echo "============== Host: $HOST ========================="
  if [ -d "$HOST" ]; then
    rm $TMPFILE
    touch $TMPFILE
    # certains sites n'ont pas de r�pertoire dists (E.G.: http://z42.de)
    DISTS_DIR="$HOST/dists"
    if [ ! -d "$DISTS_DIR" ]; then DISTS_DIR="$HOST"; fi
    # recenser tous les noms de fichiers des paquets dans Packages
    for PACKAGE in `find $DISTS_DIR -name Packages`; do
      grep $MOTIF $PACKAGE | sed        "s!$MOTIF!$HOST/!" >> $TMPFILE
    done
    # on trie tous les noms de fichiers r�cup�r�s
    mv $TMPFILE $TMPFILE.orig
    cat $TMPFILE.orig | sort > $TMPFILE
    rm $TMPFILE.orig
    # on supprime les paquets non recens�s
    # �ventuellement utiliser l'option -m de grep pour arr�ter
    # la recherche � la premi�re occurence
    for FICHIER in `find $HOST -name "*.deb"`; do
      if [ `grep -c $FICHIER $TMPFILE` = "0" ]; then
         echo "Remove $FICHIER"
         rm -f $FICHIER
         COUNT=$(($COUNT+1))
      fi
    done
  fi
done
N=`wc -l $TMPFILE`
echo -e "\nSweeping apt-proxy cache...\n$COUNT packets deleted / $N known 
packets\n"

======================= cut here =======================================

C'est vrai que le temps d'execution est acceptable
Si quelqu'un a une suggestion pour am�liorer le script, je suis preneur

Merci pour votre aide � tous
Jean-Pierre
                                                                                
                  

Répondre à