Dropbox 准备
登录 Dropbox,打开 Apps 页面,点击 Create App 按钮,创建一个 App
获取 Access token,点击 Generate 获取备用。
接着 SSH 登录 VPS 获取最新的 Dropbox Uploader 脚本
git clone https://github.com/andreafabrizi/Dropbox-Uploader.git
chmod +x dropbox_uploader.sh
./dropbox_uploader.sh info根据提示输入 Access token,Dropbox 绑定成功。再次运行
./dropbox_uploader.sh info
可以看到绑定的 Dropbox 账户信息。
Email 准备
安装Email组件,以保证数据库文件可以发送到您的邮箱
apt-get install sendmail mutt
创建备份脚本
请确保有以下目录,如果没有请执行
mkdir -p /root/backups/sql
脚本开始
vi backup.sh
!/bin/bash
你要修改的地方从这里开始
MYSQL_USER= #数据库用户
MYSQL_PASS= #数据库密码
MAIL_TO= #发送邮箱
WEB_DATA=/home/wwwroot #本地网站路径
DOMAIN= #域名
你要修改的地方从这里结束
定义备份的名字
DBName=Data_$(date +"%Y%m%d%H").tar.gz
WebName=Web_$(date +%Y%m%d).tar.gz
定义旧数据名字 这里删除60天前的数据
OldDBName=Data_$(date -d -60day +"%Y%m%d").tar.gz
OldWebName=Web_$(date -d -60day +"%Y%m%d").tar.gz
#备份目录
cd /root/backups/sql
导出数据库,一个数据库一个压缩文件
for db in `/usr/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do
(/usr/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz)
done
压缩数据库文件为一个文件
tar zcf $DBName *.sql.gz
rm -rf *.sql.gz
将文件上传到 Dropbox
/root/dropbox_uploader.sh upload "$DBName" "/"
删除旧的数据
rm -rf OldDBName OldWebName
开始删除远程旧的文件
/root/dropbox_uploader.sh delete $OldDBName
以下内容需要根据实际环境修改
发送数据库到Email
echo "主题:数据库备份" | mutt -e "my_hdr from:$DOMAIN<root@$DOMAIN>" -a /root/backups/sql/$DBName -s "内容:数据库备份" -- $MAIL_TO
压缩网站数据
tar zcf /root/backups/$WebName $WEB_DATA
将文件上传到 Dropbox
/root/dropbox_uploader.sh upload "$WebName" "/"
/root/dropbox_uploader.sh delete $OldWebName
发送网站数据到Email
echo "主题:网站备份" | mutt -e "my_hdr from:$DOMAIN<root@$DOMAIN>" -a /root/backups/$DBName /root/backups/$DBName -s "内容:网站备份" -- $MAIL_TO脚本修改完,上传至 /root/ 目录下,并赋予执行权限
chmod +x /root/backup.sh
准备添加定时设置,每2小时备份数据
crontab -e
0 */2 * * * bash /root/backupsql.sh重启Crontab
/etc/init.d/cron restart