#!/bin/bash
############### 你要修改的地方從這裡開始 ###############
DROPBOX_UPLOADER=/opt/dropbox_uploader.sh 	# Dropbox Uploader該程式位置
BACKUP_DIR=/opt/backup 				# 備份檔位置
WEB_DATA=/home/admin/web/ 			# 要備份的網站位置，可以空格做區隔備份多個位置
MYSQL_USER=root 				# MySQL使用者名稱
MYSQL_PASS=OOXX 			# MySQL密碼
MYSQL_PATH=mysql 				# MySQL程式路徑
MYSQLDUMP=mysqldump 				# MySQLDUMP程式路徑
MYSQLCHECK=mysqlcheck 				# MySQLCHECK程式路徑
############### 你要修改的地方從這裡結束 ###############
#定義資料庫的名字和舊資料庫的名字
DBName=$HOSTNAME-MySQL_$(date +"%Y%m%d").tar.gz
OldDB=$HOSTNAME-MySQL_$(date -d -7day +"%Y%m%d").tar.gz
#定義網站資料的名字和舊網站資料的名字
WebName=$HOSTNAME-Web_$(date +%Y%m%d).tar.gz
OldWeb=$HOSTNAME-Web_$(date -d -7day +"%Y%m%d").tar.gz
#刪除本地7天前的資料庫
mkdir -p $BACKUP_DIR
cd $BACKUP_DIR
rm -f $BACKUP_DIR/$HOSTNAME-MySQL_$(date -d -7day +"%Y%m%d").tar.gz
#刪除本地1天前的網站資料
rm -f $BACKUP_DIR/$HOSTNAME-Web_$(date -d -1day +"%Y%m%d").tar.gz
#最佳化並自動修復資料庫
$MYSQLCHECK -u $MYSQL_USER -p$MYSQL_PASS -oA --auto-repair > /dev/null 2>&1
#輸出資料庫，如果使用root帳號會輸出成一個資料庫一個SQL檔
for db in `$MYSQL_PATH -u $MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
($MYSQLDUMP -u $MYSQL_USER -p$MYSQL_PASS --single-transaction --skip-lock-tables ${db} > ${db}.sql)
done
#壓縮所有資料庫為一個壓縮檔並刪除所有的SQL檔
rm -f information_schema.sql mysql.sql performance_schema.sql
tar zcfP $BACKUP_DIR/$DBName $BACKUP_DIR/*.sql
rm -f $BACKUP_DIR/*.sql
#壓縮網站資料
tar zcfP $BACKUP_DIR/$WebName $WEB_DATA --exclude=wp-content/akeebabackup --exclude=wp-content/cache
#上傳到Dropbox空間並刪除7天前的資料
$DROPBOX_UPLOADER -f /root/.dropbox_uploader upload "$DBName" /
$DROPBOX_UPLOADER -f /root/.dropbox_uploader upload "$WebName" /
$DROPBOX_UPLOADER -f /root/.dropbox_uploader delete "$OldDB" /
$DROPBOX_UPLOADER -f /root/.dropbox_uploader delete "$OldWeb" /
# ring a bell
printf '\007'