自动备份网站文件及数据库到dropbox
- 第三方资源:Dropbox Uploader
- 系统环境:Ubuntu x64
方法:
-
在dropbox官方创建一个新的应用「 Dropbox API App」,获得APP key和APP secret
-
在终端上下载并执行本文开头所引用的第三方资源
curl "https://raw.githubusercontent.com/andreafabrizi/Dropbox-Uploader/master/dropbox_uploader.sh" -o dropbox_uploader.sh sudo $chmod +x dropbox_uploader.sh sudo $./dropbox_uploader.sh
-
按照屏幕提示输入APP key和APP secret,许可权限类型选择a,确认后在浏览器中打开终端给出的token链接,完成验证
-
测试上传文件,提示done则成功
sudo ./dropbox_uploader.sh upload yourfile
-
编写备份bash脚本,
sudo vi /root/backup.sh
,内容如下#!/bin/bash MYSQL_USER=xxxx #mysql用户名 MYSQL_PASS=xxxxx #mysql密码 WEB_DATA=/var/www #要备份的网站数据 # 定义备份存放目录 DROPBOX_DIR=/$(date +%Y-%m-%d) # Dropbox上的备份目录 LOCAL_BAK_DIR=/home/yourid/backup # 本地备份文件存放目录 #定义备份文件名字 DBBakName=Data_$(date +"%Y%m%d").tar.gz WebBakName=Web_$(date +"%Y%m%d").tar.gz # 定义旧数据名称 Old_DROPBOX_DIR=/$(date -d -30day +%Y-%m-%d) OldDBBakName=Data_$(date -d -30day +"%Y%m%d").tar.gz OldWebBakName=Web_$(date -d -30day +"%Y%m%d").tar.gz #删除本地30天前的旧数据 rm -rf $LOCAL_BAK_DIR/$OldDBBakName $LOCAL_BAK_DIR/$OldWebBakName ./dropbox_uploader.sh delete $Old_DROPBOX_DIR/ #导出mysql数据库 mysqldump -u$MYSQL_USER -p$MYSQL_PASS --all-databases > $LOCAL_BAK_DIR/db.sql #压缩数据库 tar zcvf $LOCAL_BAK_DIR/$DBBakName $LOCAL_BAK_DIR/db.sql rm -rf $LOCAL_BAK_DIR/db.sql #压缩网站数据 tar zcvf $LOCAL_BAK_DIR/$WebBakName $WEB_DATA #开始上传 cd ~ ./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$DBBakName $DROPBOX_DIR/$DBBakName ./dropbox_uploader.sh upload $LOCAL_BAK_DIR/$WebBakName $DROPBOX_DIR/$WebBakName echo -e "Backup Done!"
-
增加执行权限,
sudo chmod +x /root/backup.sh
-
测试执行脚本,
sudo ./backup.sh
-
设置cron定时任务,
sudo crontab –e
,并且在文件中增加45 4 1 * * /root/backup.sh #每月1日4点45分执行backup.sh文件
-
重启cron ,
sudo service cron restart