Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/03/2007, à 08:59

Uranai

script de backup

à la base, ici, il est fait pour freeradius (vous n'aurez aucun mal à le comprendre je pense ^^), il est fonctionnel, à mettre dans cron.daily (le mien fait ça a 3h40).

Le script fait un backup du fichier users.conf en mettant la date devant, en ne gardant que celles du dernier mois (approximativement les 30 dernières), en prenant soin d'éviter les petites subtilités à la c.. ^^.

Si quelqu'un a une idée pour l'améliorer, je suis preneur wink
Enfin, si c'est au niveau de la lourdeur, je sais que je fais des variables doublons, mais à moins que ce ne soit grave en bash, et vu ce que fais le script, ça ne va pas noyer le serveur (en tant que programmeur occasionnel, c'est pas vraiment ma priorité ^^)

#!/bin/sh
# backup du fichier radius

# date du jour
DATE=`date +%Y_%m_%d`
BACKUP=$DATE"_users.conf"

# date avec un mois en moins
DATB=`date +%Y` 
DATC=`date +%m`
DATC=$(($DATC - 1))
DATD=`date +%d`
BACKA=$DATB"_"0$DATC"_"$DATD"_users.conf"

# pour les mois de septembre et novembre (a la ligne au dessus on ajoute un 0, 
# ca le fera pas 011 pour le mois de decembre c'est traite en bas)
SEPTNOV=`date +%Y`
SEPTNOVI=`date +%m`
SEPTNOVA=$(($SEPTNOVI - 1))
SEPTNOVU=`date +%d`
BACKSN=$SEPTNOV"_"$SEPTNOVA"_"$SEPTNOVU"_users.conf"

# pour tester le mois
MOIS=`date +%m`

# pour decembre - janvier
ANDAVANT=`date +%Y`
ANDEUX=$(($ANDAVANT - 1))
MOISAND=`date +%m`
MOISDEUX=$(($MOISAND + 11))
JOURAND=`date +%d`
BACKAN=$ANDEUX"_"$MOISDEUX"_"$JOURAND"_users.conf"

# pour l'annee bisextile et les mois impairs
AN=`date +%Y`

# dates particulieres
VNJ=$AN"_01_29_users.conf"
TJ=$AN"_01_30_users.conf"
TUJ=$AN"_01_31_users.conf"
TUM=$AN"_03_31_users.conf"
TUMA=$AN"_05_31_users.conf"
TUA=$AN"_08_31_users.conf"
TUS=$AN"_10_31_users.conf"

/bin/cp /etc/freeradius/users.conf /etc/freeradius/userbackup/$BACKUP

case "$MOIS" in
   01)    ## en janvier, faut enlever decembre
         /bin/rm /etc/freeradius/userbackup/$BACKAN
     ;;
   02)    ## en fevrier, faut rien faire de special
         /bin/rm /etc/freeradius/userbackup/$BACKA
     ;;
   03)    ## en mars, faut enlever le 30, le 31, et parfois le 29 janvier
         if [ "$AN" % 100 != "0" ]
          then if [ "$AN" % 4 = "0" ]
	     then /bin/rm /etc/freeradius/userbackup/$VNJ 
         fi
         fi
         /bin/rm /etc/freeradius/userbackup/$TJ
	 /bin/rm /etc/freeradius/userbackup/$TUJ
         /bin/rm /etc/freeradius/userbackup/$BACKA
     ;;
   04)    ## ca redevient simple pour le mois suivant
         /bin/rm /etc/freeradius/userbackup/$BACKA
     ;;
   05)    ## moi de mai : supprimer le 31mars 
         /bin/rm /etc/freeradius/userbackup/$TUM
         /bin/rm /etc/freeradius/userbackup/$BACKA
     ;; 
   06)    ## le plus dur est passe
         /bin/rm /etc/freeradius/userbackup/$BACKA
     ;;
   07)    ## enlever le 31mai
         /bin/rm /etc/freeradius/userbackup/$BACKA
         /bin/rm /etc/freeradius/userbackup/$TUMA
     ;;
   08)
         /bin/rm /etc/freeradius/userbackup/$BACKA
     ;;
   09)    ## aout et juillet sont de 31jours, pas d'embrouille
         /bin/rm /etc/freeradius/userbackup/$BACKA
     ;;
   10)    ## c'est reparti pour des suppressions
         /bin/rm /etc/freeradius/userbackup/$BACKA
         /bin/rm /etc/freeradius/userbackup/$TUA
     ;;
   11)
         /bin/rm /etc/freeradius/userbackup/$BACKSN
     ;;
   12)
         /bin/rm /etc/freeradius/userbackup/$BACKSN
         /bin/rm /etc/freeradius/userbackup/$TUS
     ;;

esac