| @@ -2,11 +2,12 @@ | |||||
| usage() | 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 | exit 1 | ||||
| } | } | ||||
| while getopts "z:d:r:s:" opt; | |||||
| while getopts "z:d:r:l:s:t:" opt; | |||||
| do | do | ||||
| case "$opt" in | case "$opt" in | ||||
| z) | z) | ||||
| @@ -16,11 +17,17 @@ do | |||||
| DAYS=$OPTARG | DAYS=$OPTARG | ||||
| ;; | ;; | ||||
| r) | r) | ||||
| FOLDER=$OPTARG | |||||
| RFOLDER=$OPTARG | |||||
| ;; | |||||
| l) | |||||
| LFOLDER=$OPTARG | |||||
| ;; | ;; | ||||
| s) | s) | ||||
| SERVER=$OPTARG | SERVER=$OPTARG | ||||
| ;; | ;; | ||||
| t) | |||||
| TYPE=$OPTARG | |||||
| ;; | |||||
| *) | *) | ||||
| usage | usage | ||||
| ;; | ;; | ||||
| @@ -29,50 +36,66 @@ done | |||||
| shift $((OPTIND-1)) | 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 | usage | ||||
| fi | fi | ||||
| BRAND=`/usr/sbin/vmadm get $UUID | json brand | tr -d '\n'` | 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 | fi | ||||
| mkdir -p $RUTADESTINO/$UUID | |||||
| mkdir -p $LFOLDER/$UUID | |||||
| if [ $? != 0 ]; then | if [ $? != 0 ]; then | ||||
| echo "FAIL TO CREATE FOLDER $UUID." | echo "FAIL TO CREATE FOLDER $UUID." | ||||
| umount $RUTADESTINO | |||||
| umount $LFOLDER | |||||
| exit | exit | ||||
| fi | fi | ||||
| # mantain backups of the last N days | # mantain backups of the last N days | ||||
| find $RUTADESTINO/$UUID -type f -mtime +$DAYS -delete | |||||
| find $LFOLDER/$UUID -type f -mtime +$DAYS -delete | |||||
| snapshot() | snapshot() | ||||
| { | { | ||||
| /usr/sbin/zfs snapshot zones/$1@`date +%Y%m%d` | /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 | 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 | 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 | |||||