logocentos.jpgPour installer rapidement des machines, disposer d'un mirroir local est un plus. Il existe déjà un billet pour la mise en place d'un mirroir Debian cliquer ici. Le principe est identique ici mais avec CentOS.

Le script présenté utilise un mirroir public ( celui de ovh dans l'exemple ) dont la liste est disponible ici et le protocole rsync.

L'avantage de rsync est de travailler en différentiel. La première syncho est longue mais les suivantes très rapides. Il est facile de programmer ce script dans un cron journalier et ainsi avoir un mirroir à jour.

Les versions sont 5 et 6 en 32 et 64 bits. Le script ne ramène que les dernières versions des branches 5 et 6 ( 5.8 pour 5 et 6.2 pour 6 lors de la rédaction de ce billet ).

#!/bin/sh

rsync="/usr/bin/rsync -avHz --delete --stats --bwlimit=4000"
mirror=rsync://mirror.ovh.net/ftp.centos.org

verlist="5 6"
archlist="i386 x86_64"
baselist="os updates centosplus extras"
local=/home/mirror_centos

for ver in $verlist
do
  for arch in $archlist
  do
    for base in $baselist
    do
      remote=$mirror/$ver/$base/$arch/
      echo ------------------
      echo $ver/$base/$arch
      echo ------------------
      echo "$rsync $remote $local/$ver/$base/$arch/"

      if [ ! -e $local/$ver/$base/$arch ]; then
        echo "Répertoire inexistant -> création de : $local/$ver/$base/$arch"
        mkdir -p "$local/$ver/$base/$arch"
      fi

      $rsync $remote $local/$ver/$base/$arch/
    done
  done
done

La clause bwlimit de rsync permet de ne pas consommer toute la bande passante de la liaison, 4Mo ici. Sur une ADSL 8Mo le temps total de la première synchonisation fut de 8 heures.