| @@ -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 | |||