Le processus de compilation des bases peut être extrêmement long sur un système disque peu performant.
J’avais développé un script à coller dans /etc/cron.weekly pour télécharger et compiler automatiquement les bases.
Il travaille dans un ramdisk pour la partie compilation, et ne compile QUE les règles que tu utilises dans le fichier de configuration. Optimisation qui, comme j’espère tu pourras le voir, accélère de façon impressionnante le processus.
Ce script est, bien sûr :
- Perfectible. Il a été développé pour mes propres besoins.
- A exécuter sous l’utilisateur ‘root’ car il a besoin de créer un répertoire /ramdisk, de monter un ramdisk sur ce répertoire, de supprimer les bases existantes et de mettre les nouvelles dans /var/xxxxxxx, d’arrêter et de redémarrer Squid. Tant de tâche qui ne sont accessible qu’a root.
- A lire et comprendre, si possible, avant de l’exécuter.
- A configurer pour le faire correspondre à l’organisation de ton système
[code]#!/bin/sh
Fichier /etc/cron.weekly/squidguard_blacklists
Telecharge chaque semaine les listes noires pour squidguard
et met a jour les bases de ce dernier.
En fonctionnement par défaut, le script ne fera rien avant
l’heure définie dans RUNHOUR.
En lui passant un paramètre quelconque, il s’exécute alors immédiatement
Ex : ./squidguard_blacklists now
Heure a laqelle doit se lancer le script
RUNHOUR=“02:00”
Emplacement du fichier de configuration de squidGuard
et des bases de donnees.
SGCONF="/etc/squid/squidGuard.conf"
SGLIBS="/var/lib/squidguard"
Lien de telechargement des blacklists
BLURL=“ftp://ftp.univ-tlse1.fr/pub/reseau/cache/squidguard_contrib/blacklists.tar.gz”
############################################################
Normalement, rien a configurer en dessous de cette ligne
############################################################
Parametres du RamDisk
RAMDISK="/ramdisk"
RAMSIZE="150m"
RAMCONF=“squidGuard.ram.conf”
Calcul du temps d’attente.
DATENOW=date -d "now" +%s
DATETOWAIT=date -d "${RUNHOUR}" +%s
TIMETOWAIT=expr ${DATETOWAIT} - ${DATENOW}
Si l’heure est deja passee pour aujourd’hui alors on calcule le temps
d’attente pour “demain” a la meme heure
if [ ${TIMETOWAIT} -lt 0 ]; then
DATETOWAIT=date -d "next day ${RUNHOUR}" +%s
TIMETOWAIT=expr ${DATETOWAIT} - ${DATENOW}
fi
Si pas de parametres derriere le script, on attend le nombre de secondes
calculees avant de continuer, sinon on execute directement le script.
if [ -z $1 ]; then
sleep ${TIMETOWAIT}
fi
if [ -d ${SGLIBS} ]; then
echo ""
echo "Arret de squid …"
service squid stop
echo ""
echo "Attente que tous les processus SQUID soient termines ..."
pidof \(squid\) >> /dev/null
while [ $? -eq 0 ]; do
sleep 1
pidof \(squid\) >> /dev/null
done
echo ""
echo "Telechargement des BlackLists ..."
wget ${BLURL} -O ${SGLIBS}/blacklists.tar.gz
echo ""
echo "Decompression des Blacklists ..."
tar zxvf ${SGLIBS}/blacklists.tar.gz -C ${SGLIBS}
echo ""
echo "Suppression des anciennes BlackLists et recreation du repertoire DB ..."
rm -rf ${SGLIBS}/db
mkdir ${SGLIBS}/db || true
echo ""
echo "Deplacement des BlackLists dans la DB et application des droits ..."
mv -f ${SGLIBS}/blacklists/* ${SGLIBS}/db/
chmod 2770 ${SGLIBS}/db
echo ""
echo "Suppression du telechargement ..."
rm -rf ${SGLIBS}/blacklists ${SGLIBS}/blacklists.tar.gz
echo ""
echo "Creation d'un RamDisk de ${RAMSIZE}"
mkdir ${RAMDISK}
mount -t tmpfs ramdisk ${RAMDISK} -o size=${RAMSIZE}
echo ""
echo "Copie du fichier de configuration de squidGuard dans le RamDisk"
cp ${SGCONF} ${RAMDISK}/${RAMCONF}
echo ""
echo "Modification du fichier de config de squidGuard pour pointer sur le RamDisk"
sed -i "s|dbhome .*|dbhome ${RAMDISK}/db|" ${RAMDISK}/${RAMCONF}
echo ""
echo "Copie des bases dans le RamDisk"
echo ""
rsync -av ${SGLIBS}/ ${RAMDISK}/
echo ""
echo "Compilation des BlackLists ..."
echo ""
echo " Compilation des domaines :"
for DOMAIN in `cat ${SGCONF} | grep "domain" | grep -v "#" | awk '{print $2}'`; do
echo " -> Compilation de ${DOMAIN} ... ";
nice -n 19 squidGuard -c ${RAMDISK}/${RAMCONF} -C ${DOMAIN}
done
echo ""
echo " Compilation des urls :"
for URLS in `cat ${SGCONF} | grep "urls" | grep -v "#" | awk '{print $2}'`; do
echo " -> Compilation de ${URLS} ... "
nice -n 19 squidGuard -c ${RAMDISK}/${RAMCONF} -C ${URLS}
done
echo ""
echo "Copie des bases du RamDisk sur le disque dur"
echo ""
rsync -av ${RAMDISK}/db/ ${SGLIBS}/db/
echo ""
echo "Affichage de l'espace utilise dans le ramdisk"
LANG="C" df -h | grep "${RAMDISK}" | awk '{print $6" utilise a "$5" ( "$3" / "$2" )"}'
echo ""
echo "Suppression du RamDisk"
umount ${RAMDISK}
rmdir ${RAMDISK}
echo ""
echo "Application des droits ..."
chown -R proxy:proxy ${SGLIBS}
echo ""
echo "Demarrage de Squid ..."
service squid start
fi[/code]