#!/usr/bin/env bash set -eu #set -x synopsis() { cat << EOF Usage : `basename $0` [-h] system EOF } help() { cat << EOF `basename $0` sauvegarde le système. `synopsis` -h : affiche cette aide EOF } usage() { synopsis exit 1 } args() { local opt while getopts "h" opt; do case $opt in h) help; exit 0;; ?) usage;; esac done shift $(($OPTIND - 1)) [ $# -ne 1 ] && usage GUEST_NAME="$1" if echo $GUEST_NAME | grep -q '/'; then error "$GUEST_NAME est un nom de système invalide" fi } saveSystem() { o="$SAVE_FILE" n="$SAVE_FILE.tmp.tgz" d="$(dirname $n)" [ ! -d $d ] && mkdir -p $d set +e ( umask 077 && vdn-ssh root@$GUEST_NAME "/etc/vdn/save" > $n ) r=$? set -e if [ $r = 0 ]; then mv $n $o resizeMultipleOf512 $o r=$? fi return $r } # Programme principal VDN_PATH=$(readlink -f $(dirname $0)/..); . $VDN_PATH/bin/functions.sh args "$@" loadGuestVars $GUEST_NAME case $MODE in tgz|tgz2) ;; *|overlay) exit 0;; esac if [ ! -e $GUEST_PATH ]; then error "Le système $GUEST_NAME n'existe pas !" fi #vdn-ssh root@$GUEST_NAME echo > /dev/null || error "Can't connect to $GUEST_NAME" cmd=saveSystem if $cmd ; then s=$(du -h $SAVE_FILE | tr '\t' ' ' | cut -d ' ' -f 1) echo "Sauvegarde $SAVE_FILE effectuée ($s) !" exit 0 else echo "vdn-save ($GUEST_NAME) : Échec de la sauvegarde !" >&2 exit 1 fi