Pour les scripts : c'est ici

Titre modifié par Ricardo : avant = “SCRIPTS en vrac”

SCRIPT DE SAUVEGARDE (compatible CRON) POUR L’ARCHIVAGE SIMPLE DE PLUSIEURS SERVICES EN CHROOT DANS LE MEME REPERTOIRE DE SERVICE
(exemple :chroot/smb, chroot/http, chroot/mysql)

#!/bin/bash
###############################
#                             #
#           VARS              #
#                             #
#####-megs@libertysurf.fr-#####
###############################

# commande ou script pour envoyer a quelqu'un un mail en fin de 
# sauvagarde, libre a vous d'envoyer le log global dans le mail
#------------------------------------------------------------
MAILADM=""

# mettez ici le nom des repertoires destination des archives
# ou le repertoire de montage du peripherique de sauvegarde
#------------------------------------------------------------
ADIR="/mnt/zip"

# ajoutez ici la commande qui montra le peripherique
# de sauvegarde et le demontra a la fin de la sauvegarde
# si pas de peripherique particulier, laisser vide...
#------------------------------------------------------------
PSMNT="/root/bin/zip100 -ext2 $ADIR -v -sda1"
PSUMNT="/root/bin/zip100 -u $ADIR -v"

# mettez 'y' si vous voulez une confirmation de sauvegarde
#------------------------------------------------------------
ACONF="y"

# mettez 'n' si vous voulez le mode silencieux
#------------------------------------------------------------
VM="y"

# mettez 'y' si vous voulez que les aciennes archives soient
# renommés plutôt que écrasés
#------------------------------------------------------------
SAVOLD="n"

# mettez ici le répertoire des logs
# il y a un log global qui enregistre les events globaux ($ALOG)
# et les logs spécifiques aux erreurs d'archivages de services
# ils seront complétés comme suis: $ALOG.[service]
# PURGELOG défini si les fichiers de log sont auto réinitialisé
# avant chaque sauvegarde..
#------------------------------------------------------------
ALOG="$ADIR/backup.log"
PURGELOG="n"

# mettez ici le nom du répertoire des services a sauvegarder
# et le noms des repertoires contenant les services à archiver
#------------------------------------------------------------
SDIR="/chroot"
SERVICES="http mysql smb"

###############################
#                             #
#  GESTION DES PARAMETRES     #
#                             #
#####-megs@libertysurf.fr-#####
###############################
if [ $# -ne 0 ]; then
   for i in $* ; do
    case "$i" in
        '-c') ACONF="n";;       	# ne pas demander confirmation avant sauvegarde
        '-v') VM="n";;          	# mode silencieux
        '-s') SAVOLD="y";;      	# renommé ancienne archive avant de creer nouvelle sauvegarde
        '-l') PURGELOG="y";;      	# purge les log avant la sauvegarde
        *)
         if [ -d "$SDIR/$i" ] ; then
	    SERVICES=$i;
           else
            if [ $VM = "y" ]; then
              echo " Erreur : $i n'existe pas ou n'est pas un parametre valide";
	      echo " "
              echo " USAGE backup [Service] [-c] [-v] [-s] [-l]";
              echo "    -c = ne pas demander confirmation"
              echo "    -v = mode silencieux"
              echo "    -s = renommer l'ancienne sauvegarde si elle existe"
	      echo "    -l = purge les logs avant la sauvegarde"
	      echo " "
              echo " ---------------------------=\\megs@libertysurf.fr//=-"
            fi;
            exit 1;
         fi
        ;;
    esac
   done
fi

###############################
#                             #
#      MAIN SCREEN            #
#                             #
#####-megs@libertysurf.fr-#####
###############################

if [ $VM = "y" ]; then
clear
echo " _______________________________________________________________"
echo " "
echo "      SCRIPT DE SAUVEGRADE DES SERVICES SERVEURS CHROOTES"
echo " _______________________________________________________________"
echo " "
echo "   LogsFiles  = $ALOG.[$SERVICES]"
echo "   ArchiveDir = $ADIR"
echo "   ChrootDir  = $SDIR"
echo " _______________________________________________________________"
echo " ATTENTION! stoppez tout les services  concerné si vous refaites"
echo " la  restauration  d'une  archive,  et  veillez  a  démonter les"
echo " repertoires  montés  automatiquement  dans  l' arborescence  du"
echo " service  concerné.  Les  repertoires  'tmp'  sont  exclus de la"
echo " sauvegarde ( à la  racine  du  service )  car cela fait planter"
echo " l'operation d'archivage."
echo " _______________________________________________________________"
echo " "
fi
###############################
#                             #
#      MAIN TREATMENT         #
#                             #
#####-megs@libertysurf.fr-#####
###############################

# PRISE EN COMPTE DU PERIPHERIQUE DE SAUVEGARDE
   if [ ! -z "$PSMNT" -a ! -z "$PSUMNT" ];  then
     test "$VM" = "y" && echo "    |-[ Initialisation du peripherique de sauvegarade ]"
     $PSMNT >/dev/null 2>/dev/null
        echo ":event: DEVICE : $PSMNT " >> $ALOG
        if [ $? -ne 0 ] ; then
          test "$VM" = "y" && echo "              \[Erreur : montage impossible ]"
          echo ":Fatal: impossible de monter le peripherique de sauvegarde" >> $ALOG
          exit 1
        fi
   fi

# AFFICHAGE DES DERNIERE DATE DE SAUVEGARDE
   test "$VM" = "y" && echo "    |-[ ACIENNES SAUVEGARDES ] "
   for i in $SERVICES
    do
     if test -e $ALOG.$i
       then
         test "$VM" = "y" && (echo -n "    |   o [ $i ] = " ; tail -n1 $ALOG.$i)
       else
         test "$VM" = "y" && echo "    |   o [ $i na pas encore été sauvé ]"
     fi
    done
    test "$VM" = "y" && echo "    |" 

# TEST POUR LA CONFIRMATION
if [ $ACONF = "y" ];
   then
	echo -n "    |-[ Confirmez sauvegarde ? [y,Y pour Oui]";read r
   else
        r="y"
fi

# TRAITEMENT DE LA CONFIRMATION
if [ "$r" = "y" -o "$r" = "Y" ]
   then

   # TEST DE REINITIALISATION DES LOGS
	if [ $PURGELOG = "y" ]; then
          test "$VM" = "y" && echo "    |-[ Réinitialisation des logs ]"
	  rm $ALOG* >/dev/null 2>/dev/null
        fi


   # DEBUT ARCHIVAGE
     test "$VM" = "y" && echo "    |-[ Initialisation ]"
     echo ":debut: SAUVEGARDE DU [`date`]" >> $ALOG

     for i in $SERVICES
      do
        test "$VM" = "y" && echo "    |   |---o $i [$SDIR/$i] log=$ALOG.$i"
	
	if [ "$SAVOLD" = "y" ] ; then
         if [ -e $ADIR/$i.tar ] ; then
           test "$VM" = "y" && echo "    |   |   |----> archivage ancienne sauvegarde "
           mv $ADIR/$i.tar $ADIR/$i.tar.old >/dev/null 2>&1
           echo ":event: [$ADIR/$i.tar] a été rennomé... " >> $ALOG
           test "$VM" = "y" && echo "    |   |   |        \_[$ADIR/$i.tar.old] "
         fi
	fi

	if test -e $SDIR/$i ; then
           test "$VM" = "y" && echo "    |   |   |----> Sauvegarde et Compression "
           tar czf $ADIR/$i.tar $SDIR/$i --exclude $SDIR/$i/tmp --exclude $SDIR/$i/proc 2>$ALOG.$i
           echo ":event: [$ADIR/$i.tar] a été créé... " >> $ALOG
           test "$VM" = "y" && echo "    |   |            \_[$ADIR/$i.tar] "
	  else        
           test "$VM" = "y" && echo "    |   |   \_ Erreur : [$SDIR/$i] n'existe pas, je passe... "
           echo ":erreur: [$SDIR/$i] n'existe pas, pas de sauvegarde... " >> $ALOG
	fi
     test "$VM" = "y" && echo "    |   |"
     done

     echo ":Fin: [`date`]"  >> $ALOG
     echo "[`date`]"  >> $ALOG.$i
     test "$VM" = "y" && echo "    |  [.]"
     test "$VM" = "y" && echo "    |"


     # ENVOIE D'UN MAIl A L'ADMINISTRATEUR
    if [ ! -z "$MAILADM" ];  then
      test "$VM" = "y" && echo "    |-[ Confirmation par mail ]"
      echo ":event: Confirmation par mail à $MAILADM" >> $ALOG
      $MAILADM >/dev/null 2>/dev/null
    fi

   else
     echo ":event: [`date`] interruption utilisateur par confirmation de [$USER]" >> $ALOG
 fi

# PRISE EN COMPTE DU PERIPHERIQUE DE SAUVEGARDE: DEMONTAGE
   if [ ! -z "$PSMNT" -a ! -z "$PSUMNT" ];  then
     test "$VM" = "y" && echo "    |-[ Fermeture du peripherique de sauvegarde ]"
     echo ":event: DEVICE :$PSUMNT" >> $ALOG
     $PSUMNT >/dev/null 2>/dev/null
   fi

test "$VM" = "y" && echo "   [.]"

Ca donne a peut prêt:

 
      SCRIPT DE SAUVEGRADE DES SERVICES SERVEURS CHROOTES
 _______________________________________________________________

   LogsFiles  = /mnt/zip/backup.log.[http mysql smb]
   ArchiveDir = /mnt/zip
   ChrootDir  = /chroot
 _______________________________________________________________
 ATTENTION! stoppez tout les services  concerné si vous refaites
 la  restauration  d'une  archive,  et  veillez  a  démonter les
 repertoires  montés  automatiquement  dans  l' arborescence  du
 service  concerné.  Les  repertoires  'tmp'  sont  exclus de la
 sauvegarde ( à la  racine  du  service )  car cela fait planter
 l'operation d'archivage.
 _______________________________________________________________

    |-[ Initialisation du peripherique de sauvegarade ]
    |-[ ACIENNES SAUVEGARDES ]
    |   o [ http na pas encore été sauvé ]
    |   o [ mysql ] = [Tue Jun 13 03:10:13 CEST 2006]
    |   o [ smb na pas encore été sauvé ]
    |
    |-[ Confirmez sauvegarde ? [y,Y pour Oui]y
    |-[ Réinitialisation des logs ]
    |-[ Initialisation ]
    |   |---o http [/chroot/http] log=/mnt/zip/backup.log.http
    |   |   |----> Sauvegarde et Compression
    |   |            \_[/mnt/zip/http.tar]
    |   |
    |   |---o mysql [/chroot/mysql] log=/mnt/zip/backup.log.mysql
    |   |   |----> Sauvegarde et Compression
    |   |            \_[/mnt/zip/mysql.tar]
    |   |
    |   |---o smb [/chroot/smb] log=/mnt/zip/backup.log.smb
    |   |   |----> Sauvegarde et Compression
    |   |            \_[/mnt/zip/smb.tar]
    |   |
    |  [.]
    |
    |-[ Fermeture du peripherique de sauvegarde ]
   [.]

ET VOICI UN SCRIPT QUI VA AVEC, POUR LA SAUVEGARDE SUR DISQUETTE ZIP…

#!/bin/bash
# nécéssite les drivers suivants pour zip100 sur port paralelle
# Le noyau a peut être dejas les modules intégrés
#   CONFIG_SCSI=y
#   CONFIG_SCSI_PPA=y
# et le module dans /etc/modules
#   ppa

# parametres:
# -v = mode non bavard forcé
# -u = action démonter le lecteur (action par defaut = monter)
#

#-----------------------------------------
#                   VARS
#####-megs@libertysurf.fr-#####
#-----------------------------------------
# Configuration du device par defaut
DEV="/dev/sda1"

# configuration du systeme de fichier par defaut la disquette zip
FS="ext2"

# configuration du chemin de montage
ZIPMNT="/mnt/zip"

# Mode bavard (y,n)
VM="y"

# action par defaut(ne pas toucher)
ACTION="MOUNT"

#----------------------------------------
#             MAIN PROG
#####-megs@libertysurf.fr-#####
#----------------------------------------


if [ $# -ne 0 ]; then
   for i in $* ; do
    case "$i" in
        '-u')ACTION="UMOUNT";;          # determine l'action démontage
        '-v') VM="n";;                  # mode non bavard
        '-vfat') FS="vfat";;            # systeme de fichier FAT
        '-ext3') FS="ext3";;            # ''  ''  ''  ''  '' ext3
        '-ext2') FS="ext2";;            # ''  ''  ''  ''  '' ext3
        '-sda1') DEV="/dev/sda1";;      # device sda1
        '-sda2') DEV="/dev/sda2";;      # device sda2
        '-sda3') DEV="/dev/sda3";;      # device sda3
        '-sda4') DEV="/dev/sda4";;      # device sda4
        *)
         if [ -d "$i" ] ; then
            ZIPMNT=$i;
           else
            if [ $VM = "y" ]; then
              echo "Erreur : $i n'existe pas ou n'est pas un parametre valide";
              echo "USAGE zip100 [/mount/rep] [-u] [-v] [-vfat/-ext{2|3}] ";
            fi;
            exit 1;
         fi
        ;;
    esac
   done
fi

case $ACTION in
  MOUNT)
        if [ $VM = "y" ] ; then echo " Montage du iomega zip100 en $FS sur $ZIPMNT" ; $
        mount -t $FS $DEV $ZIPMNT >/dev/null 2>/dev/null;
  ;;

  UMOUNT)
        if [ $VM = "y" ] ; then echo " Demontage du iomega zip100 en $FS sur $ZIPMNT" $
        umount $ZIPMNT >/dev/null 2>/dev/null;
  ;;
esac

hello,

Il manque quand meme, la confirmation par mail, deplacement sur un serveur distant en connexion ssh avec clef publique.

je t’en prit, c’est du 100%FREE, ajoute …ajoute, en se qui me conscerne ca ne m’est pas utile. mais Je t’en pris fait , ca fera des heureux surement .

(moi je me sent d’une âme de dévellopeur de fautes orthographiques…)

Salut,

Bravo !

Pourquoi toutes ces petites merveilles ne sont elles pas sous forme de “wiki”.
Celà permettrais facilement aux meilleurs de perfectionner, moi je me sens une ame de correcteur orthographique :blush:

Parceque le wiki, il faut l’alimenter un peu pour l’amorcer, et que ceux qui ont été chargé de le faire il y a un an (moi et peut être d’autres) sont des gros flemmards qui passent leur temps à causer de bêtises dans la “pause café” plutot que de bosser pour la collectivité…

Re,

Pour l’atteindre ce wiki, j’appuie sur quel bouton :smiley:

En premier lieu sur le bouton power de ton pc pour l’allumer, ensuite ben euh oui en fait quoi ensuite?

Re,

C’est peut-être une des raisons de l’absence de fréquentation :smiley:

Wiki ??? c quoi ca! ahhh c’est du verlant !

naaan Kiwi vous voulez dire ^^…

jaime bien les kiwis ^^ :laughing:

il est ou le wiki de la communauté?

Salut Megs,

A moins que tu ne connaisses mieux pour mettre en commun tes dons de développeur en bénéficiant de la GPL pour l’orthographe et les extensions.!

NB. Les kiwis sont ces droles de fruits qui poussent dans le 47 et que nous exportons vers le cercle polaire (Paris)

nan je dirais même que je ne savais pas du tout que ca existait, je connaissait les systemes de gestion de bug et du travail d’equipe (mantis) mais un systeme du genre (visiblement ) non…

Re,

Le principe : Tu rédiges et tu testes ton script. Par un copier coller tu le mets à disposition dans une base de données Wiki. Chacun des membres déclarés apporte sa pierre à ton édifice mais tu es parfaitement maitre de revenir en arrière, base de données oblige.

Normalement il en sort un objet “presque” parfait qui sert de “comment-faire” ( how-to) à chacun.

ca ma l’air d’être sympatique se truc, mais faut du temps a consacrer au travail des autres…(en général cva plus vite quand c’est un élément qui est utile a tout le monde)…

Re,

Pourquoi, tu developpes des choses qui sont utiles à personne ? Et si tu consacres des heures au developpement, je peux bien passer quelques minutes à le relire :slightly_smiling:

wiki.debian-fr.org/ , voyons, mais maintenant, je crois qu’il est desactivé.

Salut,

Selon les chefs c’est YAKA, YAPUKA, FOKON, FODREKON, bref il faut le réactiver :laughing:

ah oui, je l’avais oublié aussi celui là: ILFO :mrgreen:

hum… etttt y a bon où pour y accéder ?
faut soudoyer qui ? ^^
pakheu mot de pass y a pas bon… 8)

Bonsoir,

Du calme, tu peux pas tout avoir le meme jour :laughing:

Maj sur script effectué…et ajout d’un script satellite