logilab-vm #7378 Fonction sauvegarde et restauration [waiting feedback]
Sauvegarde et restauration de VMs. Il peut y avoir plusieurs sauvegardes d'une VM. Et choix de la VMs à restaurer | |
priority | normal |
---|---|
type | enhancement |
done in | 0.2.2 |
load | 1.000 |
load left | 0.000 |
closed by | <not specified> |
Workflow history
from state (11) | to state | comment | date | User |
---|---|---|---|---|
open | waiting 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 feedback | open | 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 UTC | sgautier |
open | waiting feedback | Nous n'arrivons pas à trouver les scripts. Où sont les sources ? Merci d'avance | 2009/03/23 16:29 UTC | admin |
validation pending | open | 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 UTC | admin |
open | validation pending | 2009/02/23 09:00 UTC | admin | |
validation pending | open | 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 UTC | sgautier |
open | validation pending | 2009/02/06 16:30 UTC | admin | |
waiting feedback | open | 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 UTC | admin |
open | waiting 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 UTC | admin |
waiting feedback | open | erreur, mauvais ticket | 2009/01/21 16:07 UTC | admin |
open | waiting feedback | Pour pouvoir commencer cette fonctionnalité, il nous faudrait :
| 2009/01/21 16:05 UTC | admin |
Ticket #7378 - latest update on 2009/09/01, created on 2009/01/21
Comments
-
2009/01/21 16:02
-
2009/02/02 09:31
add commentSerait-il possible d'avoir plus de précision sur la création des VMs ?
Devra entièrement passer par la configuration libvirt ?
Configuration à connaître : nom de l'interface bridge à linker, adressage IP, adressage MAC, hostname des VMs, etc.
(commentaire déplacé dans le ticket 7376)
fonctionnalité implémentée pour KVM seulement. N'existe pas non plus dans l'hyperviseur Openvz