Sfoglia il codice sorgente

separo funciones, creo variable DATE e inserto mas checks

develop
psarria 3 anni fa
parent
commit
616f2133de
1 ha cambiato i file con 67 aggiunte e 13 eliminazioni
  1. +67
    -13
      zonebackuptozone.sh

+ 67
- 13
zonebackuptozone.sh Vedi File

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


Loading…
Annulla
Salva