Scripts to automating daily tasks http://gitea.open6hosting.com/Open6Hosting/smartos-bin
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

102 líneas
1.9 KiB

  1. #!/bin/bash
  2. usage()
  3. {
  4. echo "Usage: $0 -z UUID -d days -r remote_folder -l local_folder -s server -t type" >&2
  5. 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
  6. exit 1
  7. }
  8. while getopts "z:d:r:l:s:t:" opt;
  9. do
  10. case "$opt" in
  11. z)
  12. UUID=$OPTARG
  13. ;;
  14. d)
  15. DAYS=$OPTARG
  16. ;;
  17. r)
  18. RFOLDER=$OPTARG
  19. ;;
  20. l)
  21. LFOLDER=$OPTARG
  22. ;;
  23. s)
  24. SERVER=$OPTARG
  25. ;;
  26. t)
  27. TYPE=$OPTARG
  28. ;;
  29. *)
  30. usage
  31. ;;
  32. esac
  33. done
  34. shift $((OPTIND-1))
  35. if [ -z "${UUID}" || -z "${DAYS}" || -z "${RFOLDER}" || -z "${LFOLDER}" || -z "${SERVER}" && -z "${TYPE}" ]; then
  36. usage
  37. fi
  38. BRAND=`/usr/sbin/vmadm get $UUID | json brand | tr -d '\n'`
  39. mkdir -p $LFOLDER
  40. if [ $TYPE = "nfs" ]; then
  41. OVH="/export/ftpbackup/${RFOLDER}"
  42. mount $SERVER:$OVH $LFOLDER
  43. if [ $? != 0 ]; then
  44. echo "MOUNT FAILED."
  45. umount $LFOLDER
  46. exit
  47. fi
  48. elif [ $TYPE = "smb" ]; then
  49. mount -F smbfs //o6h.smartos5:c0c0l1s0@${SERVER}/${RFOLDER} $LFOLDER
  50. if [ $? != 0 ]; then
  51. echo "MOUNT FAILED."
  52. exit
  53. fi
  54. fi
  55. mkdir -p $LFOLDER/$UUID
  56. if [ $? != 0 ]; then
  57. echo "FAIL TO CREATE FOLDER $UUID."
  58. umount $LFOLDER
  59. exit
  60. fi
  61. # mantain backups of the last N days
  62. find $LFOLDER/$UUID -type f -mtime +$DAYS -delete
  63. snapshot()
  64. {
  65. /usr/sbin/zfs snapshot zones/$1@`date +%Y%m%d`
  66. /usr/sbin/zfs send zones/$1@`date +%Y%m%d` > $LFOLDER/$UUID/$1@`date +%Y%m%d`
  67. }
  68. snapshot $UUID
  69. if [ $BRAND = "kvm" ]
  70. then
  71. snapshot ${UUID}-disk0
  72. elif [ $BRAND = "bhyve" ]
  73. then
  74. snapshot ${UUID}/disk0
  75. fi
  76. /usr/sbin/zonecfg -z $UUID export > $LFOLDER/$UUID/$UUID.`date +%Y%m%d`.cfg
  77. if [ $TYPE = "nfs" ]; then
  78. umount $LFOLDER
  79. fi
  80. ## TODO
  81. # smb: query for username
  82. # smb: query for password