前两天,我的美国VPS再一次出问题,系统无法重启,跟那边说了,没回应,只好自行重装系统。悲催的是,数据只能备份到11月7日,唉,都是没备份的惹祸。为了防止这样的事情再一次发生,我利用国外的云盘Dropbox进行数据的定时备份,这样再也不担心什么了。下面是相关的教程,感谢下小旭旭,因为他解答了我不少问题。
第一步,登陆VPS,然后利用wget下载dropbox安装包(切记:在root目录下)
wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86 #32位系统 wget -O dropbox.tar.gz http://www.dropbox.com/download?plat=lnx.x86_64 #64位系统
第二步,解压安装包,运行安装
tar zxvf dropbox.tar.gz #解压
.dropbox-dist/dropboxd #运行
第三步,运行后会出现一段网址,我们复制黏贴到浏览器中,是需要我们来绑定DropBox账户的
如果你还没有dropbox账户就需要先注册(我要注册Dropbox)一个了,默认账户送2G存储空间,可以进行任务升级,一般2G也够用。(有些地区是打不开网站的,需要越墙)。绑定成功在SSH中会看到成功字样,回车就OK。
第四步,建立软连接
cd ~/Dropbox
cd backup/ #backup目录
ln -s /home/wwwroot/xxx # xxx是你的网站目录
ln -s /home/wwwroot/mysql #mysql存放目录
意思很简单,我们在Dropbox文件夹中会看到是我们Dropbox的所有内容,不相信我们可以安装了本地客户端然后看到,然后我们需要把wwwroot下的网站同步快捷方式到Dropbox下,这样可以达到同步备份。
第五步,同步软连接数据
.dropbox-dist/dropboxd
在root目录下运行上述的命令会同步文件在我们看到的dropbox浏览器界面客户端
第六步,定时进行同步数据
因为运行备份定时会占用不小的内存,也没有必要及时同步,我们可以设置定时备份。
killall dropbox #关闭守护进程
在root目录下放置 mysql_backup.sh脚本文件,备份数据库
chmod +x mysql_backup.sh #给予权限 crontab -e #赋予周期 0 2 * * * sh /root/mysql_backup.sh restart 0 3 * * * sh /root/mysql_backup.sh stop 开始和结束时间,早上2-3点进行运行
mysql_backup.sh代码:
#/bin/bash mysqldump --user=root --password='数据库密码' --databases 数据库名| gzip > /home/wwwroot/mysql/数据库名-`date +%Y%m%d%H%M`.sql.gz find /home/wwwroot/mysql/ -name "*.gz" -mtime +7 -exec /bin/rm {} ;
在root目录下放置 all_backup.sh脚本文件,同步文件和数据库
chmod +x all_backup.sh #给予权限 crontab -e #赋予周期 0 4* * * sh /root/all_backup.sh restart 0 5 * * * sh /root/all_backup.sh stop 开始和结束时间,早上4-5点进行运行
all_backup.sh脚本代码
#!/bin/sh start() { echo starting dropbox /root/.dropbox-dist/dropboxd & } stop() { echo stoping dropbox pkill dropbox } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; esac
启动停止dropbox方法:
./all_backup.sh start
./all_backup.sh stop
因为dropbox的相关命令在all_backup.sh里面
删除卸载dropbox方法:
killall dropbox
rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py
复制脚本代码的时候,请使用UltraEdit编辑器,把文件格式转换为unix(流程为:文件-转换-DOS到UNIX),否则会出错。
脚本代码是放在root下面的,如果你想测试下,可以参考执行的命令: ./all_backup.sh start和./mysql_backup.sh start。
这次的备份流程是,先定时备份数据库,然后定时同步网站文件和数据库。为什么不是先压缩文件和数据库到同一个目录,然后同步那个目录?因为Dropbox同步压缩的大文件,需要很长时间,而同步网站文件则很快。
昨天我就测试了下,同步500MB的压缩包,需要很长时间,而且每天都有压缩包,客户端还得每天下载那么多数据,慢死了,所以建议你同步网站文件和数据库就可以了。
如果你想备份压缩包,可以参考这个代码,并命名为backup.sh,放到root目录下面,执行./backup.sh测试,然后定时运行,具体可参考上面的方法。
#/bin/bash mysqldump --user=root --password='数据库密码' --databases 数据库名 | gzip > /backup/数据库名-`date +%Y%m%d%H%M`.sql.gz tar -zcvf /backup/网站目录名-`date +%Y%m%d%H%M`.tar.gz /home/wwwroot/网站目录名 find /backup -name "*.gz" -mtime +7 -exec /bin/rm {} ;