Advertisement
Guest User

Untitled

a guest
Jan 10th, 2017
167
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. SERVER=""
  4. BACKUPS_LIMIT=7
  5. WORKING_DIR="/root/backup"
  6.  
  7. BACKUP_MYSQL="true"
  8. MYSQL_USER=""
  9. MYSQL_PASSWORD=""
  10.  
  11. SERVERS_FOLDER="/root/Servers"
  12.  
  13. # Binario de MegaFuse a ejecutar:
  14. MEGA_BIN=/root/MegaFuse
  15. MEGA_CONF=/root/.megafuse.conf
  16.  
  17. # Punto de montaje Mega y cache path (deben coincidir con los del archivos de conf .megafuse.conf
  18. MOUNTPOINT="/tmp/mega"
  19. CACHEPATH="/tmp/megacache"
  20.  
  21. ##################################
  22. # Create local working directory and collect all data
  23. echo 'Creating local working directory and collect all data...'
  24. rm -rf ${WORKING_DIR}
  25. mkdir ${WORKING_DIR}
  26. cd ${WORKING_DIR}
  27.  
  28. ## Eliminamos dirs de cache y mountpoint, y los re-creamos
  29. rm -rf $MOUNTPOINT/
  30. rm -rf $CACHEPATH/
  31.  
  32. mkdir $MOUNTPOINT
  33. mkdir $CACHEPATH
  34.  
  35. # Backup MySQL
  36. echo 'MySQL backup starting...'
  37. if [ "${BACKUP_MYSQL}" = "true" ]
  38. then
  39. mkdir ${WORKING_DIR}/mysql
  40. for db in $(mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e 'show databases;' | grep -Ev "^(Database|mysql|information_schema|performance_schema|phpmyadmin)$")
  41. do
  42. echo "Processing ${db}..."
  43. mysqldump --opt -u${MYSQL_USER} -p${MYSQL_PASSWORD} "${db}" | gzip > ${WORKING_DIR}/mysql/${db}_$(date +%F_%T).sql.gz
  44. done
  45. echo "MySQL Backup finished"
  46. #mysqldump --opt -u${MYSQL_USER} -p${MYSQL_PASSWORD} --events --ignore-table=mysql.event --all-databases | gzip > ${WORKING_DIR}/mysql/ALL_DATABASES_$(date +%F_%T).sql.gz
  47. fi
  48.  
  49. # Backup servers
  50. echo 'Servers backup starting...'
  51. mkdir ${WORKING_DIR}/servers
  52. for folder in $(find ${SERVERS_FOLDER} -mindepth 1 -maxdepth 1 -type d)
  53. do
  54. echo "Processing ${folder}..."
  55. cd $(dirname ${folder})
  56. tar cJf ${WORKING_DIR}/servers/$(basename ${folder}).tar.xz $(basename ${folder})
  57. cd - > /dev/null
  58. done
  59. echo "All servers complete"
  60.  
  61. ##################################
  62. echo "Mounting Mega directory..."
  63. sudo kill -9 $(ps fax|grep .megafuse.conf|grep -v grep |awk -F' ' '{print $1}')
  64. sudo umount $MOUNTPOINT
  65. $MEGA_BIN -c $MEGA_CONF &> /dev/null &
  66.  
  67. ## Esperamos a que se monte para seguir
  68. echo "Waiting for MegaFuse..."
  69. while [ $(mount|grep megafuse|wc -l) -ne 1 ]; do
  70. sleep 1
  71. done
  72.  
  73. ## si no está creado el dir del backup del server en Mega, lo creamos
  74. [ ! -d $MOUNTPOINT/backup_${SERVER} ] && mkdir $MOUNTPOINT/backup_${SERVER}
  75.  
  76.  
  77. # Remove old logs
  78. echo 'Removing old backups...'
  79. while [ $(ls ${MOUNTPOINT}/backup_${SERVER}/ | grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" | wc -l) -gt ${BACKUPS_LIMIT} ]
  80. do
  81. TO_REMOVE=$(ls ${MOUNTPOINT}/backup_${SERVER}/ | grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" | sort | head -n 1)
  82. rm -rf ${MOUNTPOINT}/backup_${SERVER}/${TO_REMOVE}
  83. done
  84.  
  85. # Create remote folder
  86. curday="$(date +%F)"
  87.  
  88. # Backup now!!!
  89. echo "Moving files to Mega dir..."
  90. mv ${WORKING_DIR} $MOUNTPOINT/backup_${SERVER}/${curday}
  91. echo "Synchronizing..."
  92. sync
  93. # mv ${WORKING_DIR} /mnt/backup_${SERVER}/${curday}
  94. # sync; sync; sync
  95.  
  96. # Clean local environment (just to make sure)
  97. echo 'Finishing...'
  98. sleep 10
  99. sudo umount $MOUNTPOINT
  100. # sudo rm -rf ${WORKING_DIR}
  101. sudo kill -9 $(ps fax|grep .megafuse.conf|grep -v grep |awk -F' ' '{print $1}')
  102. exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement