Workflow history

from state (11)to statecommentdateUser
openwaiting feedback

Contribution externe du RECIA pour ce ticket. En attente des sources pour mettre dans le dépôt des sources.

2009/05/06 09:55 UTC 
waiting feedbackopen

VSBACKUP

#! /bin/bash
# Soldier - SOLaere InstallER
#
# (c) 2007 GIP RECIA, OLIVET
# Send any comments to Stéphane GAUTIER <stephane.gautier@recia.fr>
#
# This program is under GPL license. See LICENSE file for details.


DATE=`date +%Y%m%d%H%M`
OPTSUFFIX="opt"
ETCSUFFIX="etc"

usage () {
echo 'Usage: vsbackup [OPTION]... '
echo
echo 'Sauvegarde des VSERVERS'
echo
echo '  Option (-o) : vserver à Sauvegarder'
echo '  Option (-a) : Tous les Vservers'
echo '  Option (-v) : Mode Verbose'
echo '  Option (-x) : Mode Debug'
echo '  Option (-d) : Idem que (x)'
echo '  Option (-h) : ce message'
echo '  Option (-r) : Efface tous les Backups pour un vserver'
echo '  Option (-e) : Export Vers un site Distant, prend comme paramètre ftp ou ssh'
echo '  Option (-c) : Cleanup efface les répertoires inutiles des vservers'
echo '  Option (-l) : Liste les vservers'
echo '  Option (-b) : Repertoire de Base'
echo '  Option (-f) : force (non interactif)'
exit 1
}

reset_backup() {
        if [ -z "$FORCE" ]
                then
                                echo "ATTENTION NOUS ALLONS SUPPRIMER TOUS LES JEUX DE SAUVEGARDE du VSERVER $VSERVERNAME du repertoire $VDIRBCK"
                                echo "[Enter] pour continuer ou [Ctrl]+[c] pour arreter"
                                read
                fi
        echo "* Suppression des archives du vserver $VSERVERNAME du repertoire $VDIRBCK"
        rm -fr $VDIRBCK/$VSERVERNAME-*.tar.bz2
        return 0
}

export_ftp() {
        [ -z "$FTPHOST" ] && {
                echo "FTPHOST Introuvable -- Fin du Programme"
                exit 0
                }
                [ -z "$FTPUSER" ] && {
                                echo "FTPUSER Introuvable -- Fin du Programme"
                                exit 0
                                }
                [ -z "$FTPPASSWD" ] && {
                                echo "FTPPASSWD Introuvable -- Fin du Programme"
                                exit 0
                                }

        echo "@@ export $VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2 to $FTPHOST"
        echo ".... vserver $VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2 transferred"
        echo "@@ export $VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2 to $FTPHOST"
        echo ".... vserver $VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2 transferred"

}

export_ssh() {
        [ -z "$SSHHOST" ] && {
                echo "FTPHOST Introuvable -- Fin du Programme"
                exit 0
                }
                [ -z "$SSHUSER" ] && {
                                echo "FTPUSER Introuvable -- Fin du Programme"
                                exit 0
                                }
                [ -z "$SSHPORT" ] && {
                                echo "FTPPASSWD Introuvable -- Fin du Programme"
                                exit 0
                                }

        echo "@@ export $VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2 to $SSHHOST"
        echo ".... vserver $VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2 transferred"
        echo "@@ export $VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2 to $SSHHOST"
        echo ".... vserver $VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2 transferred"

}

vserver_backup() {

[ -z $(vserver-stat | grep $VSERVERNAME | awk '{ print $1; }') ] || VSERVERON=1

[ -n "$VSERVERON" ] && {
        [ -n "$VERBOSE" ] && echo "@@ stop $VSERVERNAME vserver"
        $VSERVER $VSERVERNAME stop
        [ -n "$VERBOSE" ] && echo ".... vserver $VSERVERNAME stopped"
        }

[ -n "$CLEANUP" ] && {
                if [ -e "$VDIRBASE/$VSERVERNAME/etc/debian_version" ]; then
                        [ -n "$VERBOSE" ] && echo "@@ $VSERVERNAME is a Debian VSERVER -- cleanup"
                        rm -f $VDIRBASE/$VSERVERNAME/var/cache/apt/archives/*
                        rm -fr $VDIRBASE/$VSERVERNAME/tmp/*
                        rm -fr $VDIRBASE/$VSERVERNAME/var/tmp/*
                elif [ -e "$VDIRBASE/$VSERVERNAME/etc/gentoo-release" ]; then
                        [ -n "$VERBOSE" ] && echo "@@ $VSERVERNAME is a Gentoo VSERVER -- cleanup"
                        rm -fr $VDIRBASE/$VSERVERNAME/tmp/*
                        rm -fr $VDIRBASE/$VSERVERNAME/var/tmp/*
                else
                        rm -fr $VDIRBASE/$VSERVERNAME/tmp/*
                        rm -fr $VDIRBASE/$VSERVERNAME/var/tmp/*
                fi
                [ -n "$VERBOSE" ] && echo ".... vserver $VSERVERNAME cleaned"
                }

[ -n "$VERBOSE" ] && echo "@@ create $VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2"
( cd $VDIRBASE ; tar jcpf "$VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2" $VSERVERNAME 1> /dev/null 2> /dev/null )
[ -n "$VERBOSE" ] && echo ".... $VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2 created"

[ -n "$VERBOSE" ] && echo "@@ create $VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2"
( cd $VDIRCONF ; tar jcpf "$VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2" $VSERVERNAME 1> /dev/null 2> /dev/null )
[ -n "$VERBOSE" ] && echo ".... $VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2 created"

[ -n "$EXPORT" ] && export_$EXPORT

[ -n "$VSERVERON" ] && {
                [ -n "$VERBOSE" ] && echo "@@ start $VSERVERNAME vserver"
        $VSERVER $VSERVERNAME start
        [ -n "$VERBOSE" ] && echo ".... vserver $VSERVERNAME started"
        }
}

[ -e "/etc/conf.d/soldier" ] && source /etc/conf.d/soldier
[ -d "../usr_lib_solaere_api" ] && APIDIR="../usr_lib_solaere_api"
[ -z "$APIDIR" ] && {
                echo "API Introuvable -- Fin du Programme"
                exit 0
                }

[ -z "$VSERVER" ] && VSERVER="/usr/sbin/vserver"
[ -x "$VSERVER" ] || {
        echo "$VSERVER est introuvable -- Fin du Programme"
        exit 0
        }

[ -z "$VDIRBCK" ] && VDIRBCK="/srv/vservers/share/backup"

[ -z "$VDIRBASE" ] && {
        echo "VDIRBASE Introuvable -- Fin du Programme"
                exit 0
        }

[ -z "$VDIRCONF" ] && {
                echo "VDIRCONF Introuvable -- Fin du Programme"
                exit 0
                }

while getopts xlb:e:adhfcrvo: OPTION
do
        case $OPTION in
                h)
                        usage
                        ;;
                [xd])
                        set -x
                        ;;
                v)
                        VERBOSE=1
                        ;;
                e)
                        EXPORT=$OPTARG
                        [ $EXPORT = "ftp" -o $EXPORT = "ssh" ] || {
                                echo "-e prend comme methode ftp ou ssh"
                                exit
                                }
                        ;;
                a)
                        ALL=1
                        ;;
                r)
                        RSTBCK=1
                        ;;
                c)
                        CLEANUP=1
                        ;;
                l)
                        echo
                        echo "Listes de Vservers dans $VDIRBASE : "
                        echo
                        for i in `ls -1 $VDIRBASE`; do
                                echo "Vserver : $i"
                        done
                        echo
                        exit
                        ;;
                o)
                        VSERVERNAME=$OPTARG
                        ;;
                b)
                        VDIRBCK=$OPTARG
                        ;;
                                f)
                                                FORCE=1
                                                ;;
        esac
done
[ -z "$ALL" -a -z "$VSERVERNAME" ] && {
        echo "VSERVERNAME Introuvable -- Fin du Programme"
        exit 1
        }
[ -n "$RSTBCK" ] && {
                if [ -z "$ALL" ]; then
                                reset_backup
                else
                                for u in `ls -1 $VDIRBASE`; do
                                                VSERVERNAME=$u
                                                reset_backup
                                done
                fi
                exit 0
}
[ ! -d "$VDIRBCK" ] && mkdir -p $VDIRBCK

if [ -z "$ALL" ]; then
        vserver_backup
else
        for u in `ls -1 $VDIRBASE`; do
                VSERVERNAME=$u
                vserver_backup
        done
fi

VSRESTORE

#! /bin/bash
# Soldier - SOLaere InstallER
#
# (c) 2007 GIP RECIA, OLIVET
# Send any comments to Stéphane GAUTIER <stephane.gautier@recia.fr>
#
# This program is under GPL license. See LICENSE file for details.


OPTSUFFIX="opt"
ETCSUFFIX="etc"


usage () {
echo 'Usage: vsrestore [OPTION]... '
echo
echo 'Restauration des VSERVERS'
echo
echo '  Option (-o) : vserver à Restaurer'
echo '  Option (-v) : Mode Verbose'
echo '  Option (-x) : Mode Debug'
echo '  Option (-d) : Idem que (x)'
echo '  Option (-h) : ce message'
echo '  Option (-f) : Demande aucune confirmation avant la restauration'
echo '  Option (-s) : TimeStamp à restaurer'
echo '  Option (-l) : Liste les vservers'
exit 1
}

[ -e "/etc/conf.d/soldier" ] && source /etc/conf.d/soldier
[ -d "../usr_lib_solaere_api" ] && APIDIR="../usr_lib_solaere_api"
[ -z "$APIDIR" ] && {
                echo "API Introuvable -- Fin du Programme"
                exit 0
                }

[ -z "$VSERVER" ] && VSERVER="/usr/sbin/vserver"
[ -x "$VSERVER" ] || {
        echo "$VSERVER est introuvable -- Fin du Programme"
        exit 0
        }

[ -z "$VDIRBASE" ] && {
        echo "VDIRBASE Introuvable -- Fin du Programme"
                exit 0
        }

[ -z "$VDIRCONF" ] && {
                echo "VDIRCONF Introuvable -- Fin du Programme"
                exit 0
                }

[ -z "$VDIRBCK" ] && VDIRBCK="/srv/vservers/share/backup"
[ -d "$VDIRBCK" ] || {
        echo "VDIRBCK Introuvable -- Fin du Programme"
        exit 0
        }

while getopts xdhfvo:s:l OPTION
do
                case $OPTION in
                h)
                        usage
                        ;;
                [xd])
                        set -x
                        ;;
                f)
                        FORCE=1
                        ;;
                v)
                        VERBOSE=1
                        ;;
                o)
                        VSERVERNAME=$OPTARG
                        ;;
                l)
                        ls -1 /srv/vservers/share/backup/ | grep $VSERVERNAME-opt | cut -d "+" -f 2 | cut -d "." -f 1
                        exit
                        ;;
                s)
                        DATE=$OPTARG
                        ;;
        esac
done

[ -z "$VSERVERNAME" ] && {
        echo "VSERVERNAME Introuvable -- Fin du Programme"
        exit 1
}

[ -z "$DATE" ] && {
        echo
        echo "### SOLAERE VSERVER RESTORE"
        echo "###########################"
        echo
        echo "Choix de la Sauvegarde :"
        echo "---------------------- "
        n=0
        echo "Soldier Restore Vserver" > /tmp/$VSERVERNAME-bck-releases
        echo "-" > /tmp/$VSERVERNAME-bck-releases
        for i in $(ls -1 /srv/vservers/share/backup/ | grep $VSERVERNAME-opt | cut -d "+" -f 2 | cut -d "." -f 1); do
                let "n = $n + 1"
                echo " $n. $VSERVERNAME saved ${i:6:2}/${i:4:2}/${i:0:4} ${i:8:2}:${i:10:2}"
                echo "$n-$i" >> /tmp/$VSERVERNAME-bck-releases
        done
        echo "---------------------- "
        echo -n "Quelle Sauvegarde voulez-vous restaurer : "
        read RELEASE
        DATE=$(grep -r "^$RELEASE-" /tmp/$VSERVERNAME-bck-releases | cut -d "-" -f 2)
        [ -z "$DATE" ] && {
                echo "DATE Introuvable -- Fin du Programme"
                exit 0
                }
        }

[ -z "$FORCE" ] && {
        echo
        echo "ATTENTION NOUS ALLONS SUPPRIMONS LE VSERVER $VSERVERNAME ACTUELLEMENT EN PRODUCTION"
        echo "POUR LE REMPLACER PAR : $VSERVERNAME-{opt,etc}+$DATE.tar.bz2"
        echo "[Enter] pour continuer - [Ctlr]+[c] pour arreter"
        read
        [ -n "$VERBOSE" ] && echo
        [ -n "$VERBOSE" ] && echo
        }

[ -z $(vserver-stat | grep $VSERVERNAME | awk '{ print $1; }') ] || VSERVERON=1

[ -n "$VSERVERON" ] && {
        [ -n "$VERBOSE" ] && echo "@@ stop $VSERVERNAME vserver"
        $VSERVER $VSERVERNAME stop
        [ -n "$VERBOSE" ] && echo ".... vserver $VSERVERNAME stopped"
        }

[ -z "$VSERVERNAME" ] || {
        [ -n "$VERBOSE" ] && echo "@@ delete $VSERVERNAME vserver"
        rm -fr $VDIRBASE/$VSERVERNAME 1> /dev/null 2> /dev/null
        rm -fr $VDIRBASE/$VSERVERNAME 1> /dev/null 2> /dev/null
        rm -fr $VDIRCONF/$VSERVERNAME 1> /dev/null 2> /dev/null
        [ -n "$VERBOSE" ] && echo ".... vserver $VSERVERNAME deleted"
        }

[ -n "$VERBOSE" ] && echo "@@ restore $VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2"
( cd $VDIRBASE ; tar jxpf "$VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2" 1> /dev/null 2> /dev/null )
[ -n "$VERBOSE" ] && echo ".... $VDIRBCK/$VSERVERNAME-$OPTSUFFIX+$DATE.tar.bz2 restored"

[ -n "$VERBOSE" ] && echo "@@ restore $VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2"
( cd $VDIRCONF ; tar jxpf "$VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2" 1> /dev/null 2> /dev/null )
[ -n "$VERBOSE" ] && echo ".... $VDIRBCK/$VSERVERNAME-$ETCSUFFIX+$DATE.tar.bz2 restored"


[ -n "$VSERVERON" ] && {
                [ -n "$VERBOSE" ] && echo "@@ start $VSERVERNAME vserver"
        $VSERVER $VSERVERNAME start
        [ -n "$VERBOSE" ] && echo ".... vserver $VSERVERNAME started"
        }
2009/03/23 16:51 UTCsgautier
openwaiting feedback

Nous n'arrivons pas à trouver les scripts. Où sont les sources ? Merci d'avance

2009/03/23 16:29 UTCadmin
validation pendingopen

Je pense qu'il faut s'inspirer des scripts /usr/share/solare/bin/vsbackup et /usr/share/solaere/bin/vsrestore disponible dans Soldier.

2009/03/23 16:28 UTCadmin
openvalidation pending2009/02/23 09:00 UTCadmin
validation pendingopen

La sauvegarde pour les OpenVZ doit se faire par Hook.

Je pense qu'il faut s'inspirer des scripts /usr/share/solare/bin/vsbackup et /usr/share/solaere/bin/vsrestore disponible dans Soldier.

2009/02/08 15:36 UTCsgautier
openvalidation pending2009/02/06 16:30 UTCadmin
waiting feedbackopen

en conclusion de l'appel telephonique, la gestion de save/restore se fait pour les hyperviseurs qui le gere (kvm), le reste sera fait ultérieurement par des hooks par le recia

2009/02/06 16:30 UTCadmin
openwaiting feedback

en attente de la conversation téléphonique pour décider quoi faire pour les machines OpenVz et comment gérer les sauvegardes KVM

2009/02/03 11:22 UTCadmin
waiting feedbackopen

erreur, mauvais ticket

2009/01/21 16:07 UTCadmin
openwaiting feedback

Pour pouvoir commencer cette fonctionnalité, il nous faudrait :

  • un exemple pour la création de chaque type de VM.
  • réponse au commentaire du 21/01
2009/01/21 16:05 UTCadmin