| @@ -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." | |||||