You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

101 lines
1.3 KiB

#!/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