#!/bin/bash usage() { 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:l:s:t:" opt; do case "$opt" in z) UUID=$OPTARG ;; d) DAYS=$OPTARG ;; r) RFOLDER=$OPTARG ;; l) LFOLDER=$OPTARG ;; s) SERVER=$OPTARG ;; t) TYPE=$OPTARG ;; *) usage ;; esac done shift $((OPTIND-1)) 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'` 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 $LFOLDER/$UUID if [ $? != 0 ]; then echo "FAIL TO CREATE FOLDER $UUID." umount $LFOLDER exit fi # mantain backups of the last N days 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` > $LFOLDER/$UUID/$1@`date +%Y%m%d` } snapshot $UUID if [ $BRAND = "kvm" ] then snapshot ${UUID}-disk0 elif [ $BRAND = "bhyve" ] then snapshot ${UUID}/disk0 fi /usr/sbin/zonecfg -z $UUID export > $LFOLDER/$UUID/$UUID.`date +%Y%m%d`.cfg if [ $TYPE = "nfs" ]; then umount $LFOLDER fi ## TODO # smb: query for username # smb: query for password