Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- SERVER=""
- BACKUPS_LIMIT=7
- WORKING_DIR="/root/backup"
- BACKUP_MYSQL="true"
- MYSQL_USER=""
- MYSQL_PASSWORD=""
- SERVERS_FOLDER="/root/Servers"
- # Binario de MegaFuse a ejecutar:
- MEGA_BIN=/root/MegaFuse
- MEGA_CONF=/root/.megafuse.conf
- # Punto de montaje Mega y cache path (deben coincidir con los del archivos de conf .megafuse.conf
- MOUNTPOINT="/tmp/mega"
- CACHEPATH="/tmp/megacache"
- ##################################
- # Create local working directory and collect all data
- echo 'Creating local working directory and collect all data...'
- rm -rf ${WORKING_DIR}
- mkdir ${WORKING_DIR}
- cd ${WORKING_DIR}
- ## Eliminamos dirs de cache y mountpoint, y los re-creamos
- rm -rf $MOUNTPOINT/
- rm -rf $CACHEPATH/
- mkdir $MOUNTPOINT
- mkdir $CACHEPATH
- # Backup MySQL
- echo 'MySQL backup starting...'
- if [ "${BACKUP_MYSQL}" = "true" ]
- then
- mkdir ${WORKING_DIR}/mysql
- for db in $(mysql -u${MYSQL_USER} -p${MYSQL_PASSWORD} -e 'show databases;' | grep -Ev "^(Database|mysql|information_schema|performance_schema|phpmyadmin)$")
- do
- echo "Processing ${db}..."
- mysqldump --opt -u${MYSQL_USER} -p${MYSQL_PASSWORD} "${db}" | gzip > ${WORKING_DIR}/mysql/${db}_$(date +%F_%T).sql.gz
- done
- echo "MySQL Backup finished"
- #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
- fi
- # Backup servers
- echo 'Servers backup starting...'
- mkdir ${WORKING_DIR}/servers
- for folder in $(find ${SERVERS_FOLDER} -mindepth 1 -maxdepth 1 -type d)
- do
- echo "Processing ${folder}..."
- cd $(dirname ${folder})
- tar cJf ${WORKING_DIR}/servers/$(basename ${folder}).tar.xz $(basename ${folder})
- cd - > /dev/null
- done
- echo "All servers complete"
- ##################################
- echo "Mounting Mega directory..."
- sudo kill -9 $(ps fax|grep .megafuse.conf|grep -v grep |awk -F' ' '{print $1}')
- sudo umount $MOUNTPOINT
- $MEGA_BIN -c $MEGA_CONF &> /dev/null &
- ## Esperamos a que se monte para seguir
- echo "Waiting for MegaFuse..."
- while [ $(mount|grep megafuse|wc -l) -ne 1 ]; do
- sleep 1
- done
- ## si no está creado el dir del backup del server en Mega, lo creamos
- [ ! -d $MOUNTPOINT/backup_${SERVER} ] && mkdir $MOUNTPOINT/backup_${SERVER}
- # Remove old logs
- echo 'Removing old backups...'
- while [ $(ls ${MOUNTPOINT}/backup_${SERVER}/ | grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" | wc -l) -gt ${BACKUPS_LIMIT} ]
- do
- TO_REMOVE=$(ls ${MOUNTPOINT}/backup_${SERVER}/ | grep -E "^[0-9]{4}-[0-9]{2}-[0-9]{2}$" | sort | head -n 1)
- rm -rf ${MOUNTPOINT}/backup_${SERVER}/${TO_REMOVE}
- done
- # Create remote folder
- curday="$(date +%F)"
- # Backup now!!!
- echo "Moving files to Mega dir..."
- mv ${WORKING_DIR} $MOUNTPOINT/backup_${SERVER}/${curday}
- echo "Synchronizing..."
- sync
- # mv ${WORKING_DIR} /mnt/backup_${SERVER}/${curday}
- # sync; sync; sync
- # Clean local environment (just to make sure)
- echo 'Finishing...'
- sleep 10
- sudo umount $MOUNTPOINT
- # sudo rm -rf ${WORKING_DIR}
- sudo kill -9 $(ps fax|grep .megafuse.conf|grep -v grep |awk -F' ' '{print $1}')
- exit 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement