自动备份网站文件及数据库到dropbox

Posted by Y Cheung on Mon, May 4, 2015

環境

操作步驟

  1. 在dropbox官方创建一个新的应用「 Dropbox API App」,获得APP key和APP secret
  2. 在终端上下载并执行本文开头所引用的第三方资源
1curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh
2sudo $chmod +x dropbox_uploader.sh
3sudo $./dropbox_uploader.sh
  1. 按照屏幕提示输入APP key和APP secret,许可权限类型选择a,确认后在浏览器中打开终端给出的token链接,完成验证

  2. 测试上传文件,提示done则成功

1sudo ./dropbox_uploader.sh upload yourfile
  1. 编写备份bash脚本, sudo vi /root/backup.sh ,内容如下
 1      	#!/bin/bash
 2		MYSQL_USER=xxxx                            #mysql用户名
 3		MYSQL_PASS=xxxxx                           #mysql密码
 4		WEB_DATA=/var/www                          #要备份的网站数据
 5		# 定义备份存放目录
 6		DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox上的备份目录
 7		LOCAL_BAK_DIR=/home/yourid/backup # 本地备份文件存放目录
 8		#定义备份文件名字
 9		DBBakName=Data_$(date +"%Y%m%d").tar.gz
10		WebBakName=Web_$(date +"%Y%m%d").tar.gz
11		# 定义旧数据名称
12		Old_DROPBOX_DIR=/$(date -d -30day +%Y-%m-%d)
13		OldDBBakName=Data_$(date -d -30day +"%Y%m%d").tar.gz
14		OldWebBakName=Web_$(date -d -30day +"%Y%m%d").tar.gz
15		#删除本地30天前的旧数据
16		rm -rf $LOCAL_BAK_DIR/$OldDBBakName $LOCAL_BAK_DIR/$OldWebBakName
17		./dropbox_uploader.sh delete $Old_DROPBOX_DIR/
18		#导出mysql数据库
19		mysqldump -u$MYSQL_USER -p$MYSQL_PASS --all-databases > $LOCAL_BAK_DIR/db.sql
20		#压缩数据库
21		tar zcvf $LOCAL_BAK_DIR/$DBBakName $LOCAL_BAK_DIR/db.sql
22		rm -rf $LOCAL_BAK_DIR/db.sql
23		#压缩网站数据
24		tar zcvf $LOCAL_BAK_DIR/$WebBakName $WEB_DATA
25		#开始上传
26		cd ~
27		./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$DBBakName $DROPBOX_DIR/$DBBakName
28		./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$WebBakName $DROPBOX_DIR/$WebBakName
29		echo -e "Backup Done!"
  1. 增加执行权限,sudo chmod +x /root/backup.sh
  2. 测试执行脚本, sudo ./backup.sh
  3. 设置cron定时任务,sudo crontab –e,并且在文件中增加
145 4 1 * * /root/backup.sh #每月1日4点45分执行backup.sh文件
  1. 重启cron ,sudo service cron restart