|
|
|
@@ -6,29 +6,6 @@ usage() |
|
|
|
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 |
|
|
|
@@ -65,8 +42,46 @@ if [ -z ${SOURCEGZ} ] || [ -z "${UUID}" ] || [ -z ${BACKUPZ} ] || [ -z ${IDBACKU |
|
|
|
usage |
|
|
|
fi |
|
|
|
|
|
|
|
echo "Checking for snapshot of ${UUID}" |
|
|
|
# functions |
|
|
|
|
|
|
|
check_err() |
|
|
|
{ |
|
|
|
STATUS=$? |
|
|
|
if [ ${STATUS} -ne 0 ]; then |
|
|
|
echo "Unexpected error: ${STATUS}" |
|
|
|
exit ${STATUS} |
|
|
|
fi |
|
|
|
} |
|
|
|
|
|
|
|
check_snap() |
|
|
|
{ |
|
|
|
ZONE=$1 |
|
|
|
echo "Checking for snapshot of ${UUID}" |
|
|
|
zfs list -t snapshot zones/${ZONE}@`date +%Y%m%d` 2&>/dev/null 1>&2 |
|
|
|
} |
|
|
|
|
|
|
|
create_snap() |
|
|
|
{ |
|
|
|
DS=$1 |
|
|
|
echo "Creating snapshot of ${DS}..." |
|
|
|
zfs snapshot zones/${DS}@`date +%Y%m%d` |
|
|
|
check_err |
|
|
|
echo "done." |
|
|
|
} |
|
|
|
|
|
|
|
send_snap () |
|
|
|
{ |
|
|
|
DATASET=$1 |
|
|
|
echo "Sending snapshot to ${BACKUPZ}..." |
|
|
|
zfs send zones/${DATASET}@`date +%Y%m%d` | ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs receive zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET} |
|
|
|
check_err |
|
|
|
echo "done." |
|
|
|
} |
|
|
|
|
|
|
|
# main |
|
|
|
|
|
|
|
check_snap ${UUID} |
|
|
|
|
|
|
|
if [ $? -ne 0 ]; then |
|
|
|
create_snap ${UUID} |
|
|
|
else |
|
|
|
@@ -74,10 +89,27 @@ else |
|
|
|
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." |
|
|
|
send_snap ${UUID} |
|
|
|
|
|
|
|
# we check this UUID for additional datasets |
|
|
|
|
|
|
|
echo "Look for addtional datasets..." |
|
|
|
DATASET=`vmadm get ${UUID} | json datasets.0 | tr -d '\n'` |
|
|
|
|
|
|
|
if [ -n "${DATASET}" ]; then |
|
|
|
check_snap ${DATASET} |
|
|
|
fi |
|
|
|
|
|
|
|
if [ $? -ne 0 ]; then |
|
|
|
create_snap ${DATASET} |
|
|
|
else |
|
|
|
echo "Snapshot of ${DATASET} already available..." |
|
|
|
echo "done." |
|
|
|
fi |
|
|
|
|
|
|
|
send_snap ${DATASET} |
|
|
|
|
|
|
|
# we send the config |
|
|
|
|
|
|
|
echo "Sending config to ${BACKUPZ}..." |
|
|
|
zonecfg -z ${UUID} export | ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ "cat >/data/${SOURCEGZ}/${UUID}.cfg" |
|
|
|
|