From 616f2133de0617167fbda0b012695866488bac1f Mon Sep 17 00:00:00 2001 From: psarria Date: Tue, 1 Mar 2022 11:47:41 +0000 Subject: [PATCH] separo funciones, creo variable DATE e inserto mas checks --- zonebackuptozone.sh | 80 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 67 insertions(+), 13 deletions(-) diff --git a/zonebackuptozone.sh b/zonebackuptozone.sh index e1d4371..16035ab 100755 --- a/zonebackuptozone.sh +++ b/zonebackuptozone.sh @@ -1,5 +1,7 @@ #!/usr/bin/bash +DATE=`date +%Y%m%d` + usage() { echo "Usage: $0 [ -s hostname ] [ -z UUID ] [ -b backupzone ] [ -i idbackupzone ]" >&2 @@ -56,59 +58,111 @@ check_err() check_snap() { ZONE=$1 - echo "Checking for snapshot of ${ZONE}..." - zfs list -t snapshot zones/${ZONE}@`date +%Y%m%d` 2>/dev/null 1>&2 + echo "Checking for local snapshot of ${ZONE}..." + zfs list -t snapshot zones/${ZONE}@${DATE} 2>/dev/null 1>&2 +} + +check_remote_snap() +{ + DATASET=$1 + echo "Checking for an existing remote snapshot of ${DATASET}..." + ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs list zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET}@${DATE} 2>/dev/null 1>&2 +} + +check_remote_dataset() +{ + DATASET=$1 + echo "Checking for an existing remote dataset of ${DATASET}..." + ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs list zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET} 2>/dev/null 1>&2 } create_snap() { DS=$1 echo "Creating snapshot of ${DS}..." - zfs snapshot zones/${DS}@`date +%Y%m%d` + zfs snapshot zones/${DS}@${DATE} check_err echo "done." } -send_snap () +delete_local_snap() { DATASET=$1 - echo "Deleting dataset ${DATASET} on ${BACKUPZ}..." - ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs destroy -r zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET} + echo "Deleting local snapshot zones/${DATASET}@${DATE}..." + zfs destroy zones/${DATASET}@${DATE} check_err echo "done." - echo "Sending snapshot to ${BACKUPZ}..." - zfs send zones/${DATASET}@`date +%Y%m%d` | ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs receive -F zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET} +} + +delete_remote_dataset() +{ + DATASET=$1 + echo "Deleting remote dataset ${DATASET} on ${BACKUPZ}..." + ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs destroy -r zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET} 2>/dev/null 1>&2 check_err echo "done." - echo "Deleting snapshot on ${BACKUPZ}..." - ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs destroy zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET}@`date +%Y%m%d` +} + +delete_remote_snap() +{ + DATASET=$1 + echo "Deleting remote snapshot zones/${DATASET}@${DATE} on ${BACKUPZ}..." + ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs destroy -r zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET}@${DATE} 2>/dev/null 1>&2 check_err echo "done." - echo "deleting local snapshot zones/${DATASET}@`date +%Y%m%d`..." - zfs destroy zones/${DATASET}@`date +%Y%m%d` +} + +send_snap () +{ + DATASET=$1 + echo "Sending snapshot to ${BACKUPZ}..." + zfs send zones/${DATASET}@${DATE} | ssh -i /usbkey/ssh/id_rsa -p 2221 $BACKUPZ zfs receive -F zones/${IDBACKUPZ}/data/${SOURCEGZ}/${DATASET} check_err echo "done." } # main + echo "--- BACKUP_ZONE: ${IDBACKUPZ} BACKUP_ZONE_IP: ${BACKUPZ} UUID to backup: ${UUID} +DATE of backup: ${DATE} ---" check_snap ${UUID} - if [ $? -ne 0 ]; then + echo "There is no snapshot available of ${UUID}" create_snap ${UUID} else echo "Snapshot of ${UUID} already available" echo "done." fi +check_remote_dataset ${UUID} +if [ $? -eq 0 ]; then + delete_remote_dataset ${UUID} +else + echo "There is no remote dataset of ${UUID}" + echo "done." +fi + send_snap ${UUID} +check_remote_snap ${UUID} +if [ $? -eq 0 ]; then + delete_remote_snap ${UUID} +else + echo "There is no remote snapshot of ${UUID}" + echo "done." +fi + +check_snap ${UUID} +if [ $? -eq 0 ]; then + delete_local_snap ${UUID} +fi + # we check this UUID for additional datasets echo "Looking for addtional children datasets in ${UUID}..."