Last active
November 17, 2015 18:43
-
-
Save xanderio/aeaaba16be451150845f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# crontab -e | |
# 0 6 * * * /opt/scripts/backup_daily.sh > /var/backups/latest.log 2>&1 | |
# thanks to founderio i was able to create this script | |
MYSQL_CONF=/etc/mysql/debian.cnf | |
# Ignore mysql system dbs and the cloud db, as that is backed up independently (to reduce downtime of owncloud) | |
IGNORE="cloud|phpmyadmin|mysql|information_schema|performance_schema|test" | |
BACKUP_DIR=/var/backups | |
BACKUP_DIR_OWNCLOUD_DATA=$BACKUP_DIR/owncloud-data.backup | |
BACKUP_DIR_OWNCLOUD_CONFIG=$BACKUP_DIR/owncloud-config.backup | |
BACKUP_DIR_MYSQL_LATEST=$BACKUP_DIR/mysql.latest | |
BACKUP_DIR_MYSQL=$BACKUP_DIR/mysql.backup | |
BACKUP_DIR_ETC=$BACKUP_DIR/etc.backup | |
BACKUP_DIR_PHONE_BACKUP=$BACKUP_DIR/phone.backup | |
DIR_OWNCLOUD=/var/www/vhosts/xanderio.de/owncloud.xanderio.de | |
DIR_OWNCLOUD_DATA=/var/www/vhosts/xanderio.de/owncloud.xanderio.de | |
DIR_OWNCLOUD_CONFIG=/var/www/vhosts/xanderio.de/owncloud.xanderio.de/config | |
DIR_ETC=/etc | |
DIR_PHONE=/home/backup_phone/Handy\ Backup | |
mkdir -p $BACKUP_DIR | |
mkdir -p $BACKUP_DIR_OWNCLOUD_DATA | |
mkdir -p $BACKUP_DIR_OWNCLOUD_CONFIG | |
mkdir -p $BACKUP_DIR_MYSQL_LATEST | |
mkdir -p $BACKUP_DIR_MYSQL | |
mkdir -p $BACKUP_DIR_ETC | |
mkdir -p $BACKUP_DIR_PHONE_BACKUP | |
#################### | |
# Backup configuration | |
#################### | |
echo "Backup Configuration..." | |
rdiff-backup $DIR_ETC $BACKUP_DIR_ETC | |
#################### | |
# Backup owncloud-relevant data | |
#################### | |
echo "Backup ownCloud..." | |
# Put owncloud into maintenance mode | |
cd $DIR_OWNCLOUD | |
php console.php maintenance:mode --on | |
# backup data files | |
cd $BACKUP_DIR | |
rdiff-backup $DIR_OWNCLOUD_DATA $BACKUP_DIR_OWNCLOUD_DATA | |
rdiff-backup $DIR_OWNCLOUD_CONFIG $BACKUP_DIR_OWNCLOUD_CONFIG | |
# backup database | |
/usr/bin/mysqldump --defaults-extra-file=$MYSQL_CONF --skip-extended-insert --skip-comments cloud > $BACKUP_DIR_MYSQL_LATEST/cloud.sql | |
# disable maintenance mode | |
cd $DIR_OWNCLOUD | |
php console.php maintenance:mode --off | |
#################### | |
# Backup other mysql dbs | |
#################### | |
echo "Dump MySQL/MariaDB..." | |
DBS="$(/usr/bin/mysql --defaults-extra-file=$MYSQL_CONF -Bse 'show databases' | /bin/grep -Ev $IGNORE)" | |
for DB in $DBS; do | |
/usr/bin/mysqldump --defaults-extra-file=$MYSQL_CONF --skip-extended-insert --skip-comments $DB > $BACKUP_DIR_MYSQL_LATEST/$DB.sql | |
done | |
#################### | |
# mysql backup history + Backup Maintenance | |
#################### | |
echo "Backup MySQL/MariaDB..." | |
# rdiff backup of mysql dumps (to have the versions) | |
rdiff-backup $BACKUP_DIR_MYSQL_LATEST $BACKUP_DIR_MYSQL | |
# remove mysql.latest, as we now have everything in mysql.backup | |
rm -rf $BACKUP_DIR_MYSQL_LATEST | |
#################### | |
# Backup phone backup | |
#################### | |
echo "Backup Phone" | |
rdiff-backup $DIR_PHONE $BACKUP_DIR_PHONE_BACKUP | |
#################### | |
# Clean out old data | |
#################### | |
echo "Clean Backup Directories..." | |
rdiff-backup --remove-older-than 50W $BACKUP_DIR_OWNCLOUD_DATA | |
rdiff-backup --remove-older-than 50W $BACKUP_DIR_OWNCLOUD_CONFIG | |
rdiff-backup --remove-older-than 50W $BACKUP_DIR_MYSQL | |
rdiff-backup --remove-older-than 50W $BACKUP_DIR_ETC | |
rdiff-backup --remove-older-than 50W $BACKUP_DIR_PHONE_BACKUP | |
echo "Done." |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment