From 0f338108d7fb00ece18c35a6c4fcbb27d719d331 Mon Sep 17 00:00:00 2001 From: Pablo Sarria Date: Tue, 27 Aug 2019 22:21:03 +0200 Subject: [PATCH] =?UTF-8?q?modifico=20soporte=20bhyve,=20a=C3=B1ado=20sopo?= =?UTF-8?q?rte=20nfs=20y=20smb?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zonebackuptofile.sh | 73 +++++++++++++++++++++++++++++---------------- 1 file changed, 48 insertions(+), 25 deletions(-) diff --git a/zonebackuptofile.sh b/zonebackuptofile.sh index 8d3b107..6221199 100755 --- a/zonebackuptofile.sh +++ b/zonebackuptofile.sh @@ -2,11 +2,12 @@ usage() { - echo "Usage: $0 -z UUID -d days -r folder -s server" >&2 + echo "Usage: $0 -z UUID -d days -r remote_folder -l local_folder -s server -t type" >&2 + echo "ex: $o -z bbba5ecb-5bda-47a5-e103-a6bfa368bf68 -d 1 -r remote_folder -l /zone/tools/nfsshare -s 192.168.5.243 -t nfs" >&2 exit 1 } -while getopts "z:d:r:s:" opt; +while getopts "z:d:r:l:s:t:" opt; do case "$opt" in z) @@ -16,11 +17,17 @@ do DAYS=$OPTARG ;; r) - FOLDER=$OPTARG + RFOLDER=$OPTARG + ;; + l) + LFOLDER=$OPTARG ;; s) SERVER=$OPTARG ;; + t) + TYPE=$OPTARG + ;; *) usage ;; @@ -29,50 +36,66 @@ done shift $((OPTIND-1)) -if [ -z "${UUID}" ] || [ -z "${DAYS}" ] || [ -z "${FOLDER}" ] || [ -z "${SERVER}" ]; then +if [ -z "${UUID}" || -z "${DAYS}" || -z "${RFOLDER}" || -z "${LFOLDER}" || -z "${SERVER}" && -z "${TYPE}" ]; then usage fi BRAND=`/usr/sbin/vmadm get $UUID | json brand | tr -d '\n'` -RUTADESTINO="/zones/tools/mounts" -RUTAORIGEN="/export/ftpbackup/${FOLDER}" -SERVIDOR="${SERVER}" - -mkdir -p $RUTADESTINO -mount $SERVIDOR:$RUTAORIGEN $RUTADESTINO - -if [ $? != 0 ]; then - echo "MOUNT FAILED." - umount $RUTADESTINO - exit +mkdir -p $LFOLDER + +if [ $TYPE = "nfs" ]; then + OVH="/export/ftpbackup/${RFOLDER}" + + mount $SERVER:$OVH $LFOLDER + + if [ $? != 0 ]; then + echo "MOUNT FAILED." + umount $LFOLDER + exit + fi +elif [ $TYPE = "smb" ]; then + mount -F smbfs //o6h.smartos5:c0c0l1s0@${SERVER}/${RFOLDER} $LFOLDER + + if [ $? != 0 ]; then + echo "MOUNT FAILED." + exit + fi fi -mkdir -p $RUTADESTINO/$UUID +mkdir -p $LFOLDER/$UUID if [ $? != 0 ]; then echo "FAIL TO CREATE FOLDER $UUID." - umount $RUTADESTINO + umount $LFOLDER exit fi # mantain backups of the last N days -find $RUTADESTINO/$UUID -type f -mtime +$DAYS -delete +find $LFOLDER/$UUID -type f -mtime +$DAYS -delete snapshot() { /usr/sbin/zfs snapshot zones/$1@`date +%Y%m%d` - /usr/sbin/zfs send zones/$1@`date +%Y%m%d` > $RUTADESTINO/$UUID/$1@`date +%Y%m%d` + /usr/sbin/zfs send zones/$1@`date +%Y%m%d` > $LFOLDER/$UUID/$1@`date +%Y%m%d` } snapshot $UUID -if [ $BRAND = "kvm" ] || [ $BRAND = "bhyve" ] ; then - snapshot $UUID-disk0 -elif [ $BRAND = "bhyve" ]; then - snapshot $UUID-disk0 +if [ $BRAND = "kvm" ] +then + snapshot ${UUID}-disk0 +elif [ $BRAND = "bhyve" ] +then + snapshot ${UUID}/disk0 fi -/usr/sbin/zonecfg -z $UUID export > $RUTADESTINO/$UUID/$UUID.`date +%Y%m%d`.cfg +/usr/sbin/zonecfg -z $UUID export > $LFOLDER/$UUID/$UUID.`date +%Y%m%d`.cfg + +if [ $TYPE = "nfs" ]; then + umount $LFOLDER +fi -umount $RUTADESTINO +## TODO +# smb: query for username +# smb: query for password