Przeglądaj źródła

añado zonebackuptozone.sh

pull/1/head
Pablo Sarria 5 lat temu
rodzic
commit
e4cd4e5dc0
1 zmienionych plików z 85 dodań i 0 usunięć
  1. +85
    -0
      zonebackuptozone.sh

+ 85
- 0
zonebackuptozone.sh Wyświetl plik

@@ -0,0 +1,85 @@
#!/usr/bin/bash

usage()
{
echo "Usage: $0 [ -s hostname ] [ -z UUID ] [ -b backupzone ] [ -i idbackupzone ]" >&2
exit 1
}

check_err()
{
STATUS=$?
if [ ${STATUS} -ne 0 ]; then
echo "Unexpected error: ${STATUS}"
exit ${STATUS}
fi
}

check_snap()
{
ZONE=$1
zfs list -t snapshot zones/${ZONE}@`date +%Y%m%d` 2&>/dev/null 1>&2
}

create_snap()
{
ZONE=$1
echo "Creating snapshot of ${ZONE}..."
zfs snapshot zones/${ZONE}@`date +%Y%m%d`
check_err
echo "done."
}

while getopts ":s:z:b:i:" opt;
do
case "$opt" in
s)
SOURCEGZ=$OPTARG
;;
z)
UUID=$OPTARG
;;
b)
BACKUPZ=$OPTARG
;;
i)
IDBACKUPZ=$OPTARG
;;
\?)
echo "Error: Invalid Option: -${OPTARG}" >&2
usage
;;
:)
echo "Error: -${OPTARG} requires an argument."
usage
;;
*)
usage
;;
esac
done

shift $((OPTIND -1 ))

if [ -z ${SOURCEGZ} ] || [ -z "${UUID}" ] || [ -z ${BACKUPZ} ] || [ -z ${IDBACKUPZ} ]; then
usage
fi

echo "Checking for snapshot of ${UUID}"
check_snap ${UUID}
if [ $? -ne 0 ]; then
create_snap ${UUID}
else
echo "Snapshot of ${UUID} already available..."
echo "done."
fi

echo "Sending snapshot to ${BACKUPZ}..."
zfs send zones/${UUID}@`date +%Y%m%d` | ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs receive zones/${IDBACKUPZ}/data/${SOURCEGZ}/${UUID}
check_err
echo "done."

echo "Sending config to ${BACKUPZ}..."
zonecfg -z ${UUID} export | ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ "cat >/data/${SOURCEGZ}/${UUID}.cfg"
check_err
echo "done."

Ładowanie…
Anuluj
Zapisz