Scripts to automating daily tasks http://gitea.open6hosting.com/Open6Hosting/smartos-bin
25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
1.4 KiB

  1. #!/bin/bash
  2. usage()
  3. {
  4. echo "Usage: $0 -z UUID -d days -r folder -s server" >&2
  5. exit 1
  6. }
  7. while getopts "z:d:r:s:" opt;
  8. do
  9. case "$opt" in
  10. z)
  11. UUID=$OPTARG
  12. ;;
  13. d)
  14. DAYS=$OPTARG
  15. ;;
  16. r)
  17. FOLDER=$OPTARG
  18. ;;
  19. s)
  20. SERVER=$OPTARG
  21. ;;
  22. *)
  23. usage
  24. ;;
  25. esac
  26. done
  27. shift $((OPTIND-1))
  28. if [ -z "${UUID}" ] || [ -z "${DAYS}" ] || [ -z "${FOLDER}" ] || [ -z "${SERVER}" ]; then
  29. usage
  30. fi
  31. BRAND=`/usr/sbin/vmadm get $UUID | json brand | tr -d '\n'`
  32. RUTADESTINO="/zones/tools/mounts"
  33. RUTAORIGEN="/export/ftpbackup/${FOLDER}"
  34. SERVIDOR="${SERVER}"
  35. mkdir -p $RUTADESTINO
  36. mount $SERVIDOR:$RUTAORIGEN $RUTADESTINO
  37. if [ $? != 0 ]; then
  38. echo "MOUNT FAILED."
  39. umount $RUTADESTINO
  40. exit
  41. fi
  42. mkdir -p $RUTADESTINO/$UUID
  43. if [ $? != 0 ]; then
  44. echo "FAIL TO CREATE FOLDER $UUID."
  45. umount $RUTADESTINO
  46. exit
  47. fi
  48. # mantain backups of the last N days
  49. find $RUTADESTINO/$UUID -type f -mtime +$DAYS -delete
  50. snapshot()
  51. {
  52. /usr/sbin/zfs snapshot zones/$1@`date +%Y%m%d`
  53. /usr/sbin/zfs send zones/$1@`date +%Y%m%d` > $RUTADESTINO/$UUID/$1@`date +%Y%m%d`
  54. }
  55. snapshot $UUID
  56. if [ $BRAND = "kvm" ] || [ $BRAND = "bhyve" ] ; then
  57. snapshot $UUID-disk0
  58. elif [ $BRAND = "bhyve" ]; then
  59. snapshot $UUID-disk0
  60. fi
  61. /usr/sbin/zonecfg -z $UUID export > $RUTADESTINO/$UUID/$UUID.`date +%Y%m%d`.cfg
  62. umount $RUTADESTINO