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
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
|