VPS备份到Dropbox脚本
背景故事
大D对于之前某主机的10块/月的虚拟主机的FTP速度实在是忍受不能。
再加上每月10块的虚拟主机只做备份有些奢侈。。
于是大D换到了Dropbox上。。
配置过程
首先配置Dropbox应用
下载并上传Dropbox Uploader脚本。
下载后,上传到VPS,使用SSH连接到VPS,执行Dropbox Uploader脚本。
1 |
[root@Bugsong ~]#sh dropbox_uploader.sh |
执行后如下图:
访问:https://www2.dropbox.com/developers/apps
同时记录下App name后面的内容。
自然是使用协议,接受就OK了。
进入到创建Dropbox应用的界面。
在Create an app to get started with the Dropbox API,下方的输入框中输入执行Dropbox_uploader脚本时提供的App name。
然后选择使用核心产品(Core),前两个是有限的应用。
同时选择Full Dropbox。
选择完毕之后,点击Create app,创建应用。
创建应用成功后,会出现上图的页面。App name是Dropbox_uploader脚本提供的,核对一遍,然后记下下方提供的App key和App secret。
随后,将上一步得到的App Key和App secret填写。
然后,询问你选择的Dropbox应用类型,应用类型是只对一个文件夹操作还是对整个网盘操作。
在这里输入f即可。
然后脚本会向你确认App key和App secret以及Dropbox的模式,确认正确输入y即可。
然后访问提供的连接,对应用进行授权。
授权页面如下:
点允许就OK了。
到这一步,Dropbox的配置就搞定了。
备份脚本
本备份脚本是根据多个脚本修改而来。
新建一个文件名为backup.sh
脚本内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#!/bin/bash #你要修改的地方从这里开始 MYSQL_USER= #mysql用户名 MYSQL_PASS= #mysql密码 MAIL_TO= #数据库发送到的邮箱 WEB_DATA= #要备份的网站数据 #你要修改的地方从这里结束 #定义数据库的名字和旧数据库的名字 DataBakName=Data_$(date +"%Y%m%d").tar.gz WebBakName=Web_$(date +%Y%m%d).tar.gz OldData=Data_$(date -d -2day +"%Y%m%d").tar.gz OldWeb=Web_$(date -d -2day +"%Y%m%d").tar.gz #删除本地3天前的数据 echo -e "\033[31m Delete the local data three days before \033[0m" rm -rf /home/backup/Data_$(date -d -3day +"%Y%m%d").tar.gz /home/backup/Web_$(date -d -3day +"%Y%m%d").tar.gz cd /home/backup #导出数据库,一个数据库一个压缩文件 echo -e "\033[31m Export database \033[0m" for db in `/usr/local/mysql/bin/mysql -u$MYSQL_USER -p$MYSQL_PASS -B -N -e 'SHOW DATABASES' | xargs`; do (/usr/local/mysql/bin/mysqldump -u$MYSQL_USER -p$MYSQL_PASS ${db} | gzip -9 - > ${db}.sql.gz) done #压缩数据库文件为一个文件 echo -e "\033[31m Compressed database \033[0m" tar zcf /home/backup/$DataBakName /home/backup/*.sql.gz rm -rf /home/backup/*.sql.gz #发送数据库到Email,如果数据库压缩后太大,请注释这行 echo -e "\033[31m e-mail the database file \033[0m" echo "OKVPS Database Backup" | mutt -a /home/backup/$DataBakName -s "Admin,Database Backup Now" $MAIL_TO #压缩网站数据 echo -e "\033[31m Compressed Files \033[0m" tar zcf /home/backup/$WebBakName $WEB_DATA #上传到Dropbox echo -e "\033[31m Uploading to Dropbox \033[0m" sh dropbox_uploader.sh upload $DataBakName sh dropbox_uploader.sh upload $WebBakName #删除Dropbox上的旧文件 echo -e "\033[31m Delete the old Dropbox file \033[0m" sh dropbox_uploader.sh delete $OldData sh dropbox_uploader.sh delete $OldWeb |
当然了,还要在/home下新建一个backup文件夹用来存放备份的文件。
1 2 |
[root@Bugsong ~]# cd /home [root@Bugsong home]# mkdir backup |
2013-06-25更新
忽略了一个问题,需要将dropbox_uploader.sh复制到备份文件夹。否则会出现找不到dropbox_uploader.sh的问题,从而导致上传失败。
1 |
cp dropbox_uploader.sh /home/backup/ |
需要发邮件的,还要安装一下邮件发送的相关包
1 2 |
[root@Bugsong ~]# yum install sendmail mutt [root@Bugsong ~]# service sendmail start |
配置脚本
1 2 3 4 |
[root@Bugsong ~]# cd /home/backup [root@Bugsong backup]# chmod +x dropbox_uploader.sh [root@Bugsong backup]# cd ~ [root@Bugsong ~]# chmod +x backup.sh |
设置自动运行
1 |
[root@Bugsong ~]# crontab -e |
在里面写入
1 |
00 00 * * * /root/backup.sh |
其中00 00为时间分/小时,可自行修改,例如:30 12 ***,就是每天12.30运行这个脚本。
参考文献
http://www.vpsmm.com/blog/everyday-auto-backup-linux-vps
http://heylinux.com/archives/1452.html
修订
2013-06-25更新
如果您是第一次使用Dropbox,则可能提示你需要邮箱验证才能使用Dropbox APP,直接到邮箱验证即可,剩下的步骤不变。
话说大D的linux用的越来越熟练的~
有进步,鼓励一个
@dave 多谢鼓励。。除了那个脚本我修改了一下之外,剩下的基本都是参考来的
放心的话可以备份到我的vps上了,我的两个VPS,一个用来放站,一个就用来备份的……
不会shell语法的渣渣路过