- #!/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
|