博客或网站的备份是很重要的一个工作,因为经常会有一些VPS和空间商倒闭或跑路。而备份很重要的一点是异地备份,因为如果把备份仍然放在VPS上,很容易同博客一起全军覆没。如果每天手动将VPS上的数据备份,再下载到本身会耗费大量的时间和精力,老耿这几天折腾VPS,在网上查了很多关于网站备份的资料,总结出两种异地备份的方式,当然是自动进行的。
一种是通过脚本自动将数据打包通过FTP上传到Godaddy的免费空间上,另一种是使用dropbox来备份,这两种方式各有优缺点,下面来详细介绍一下。
自动将VPS数据备份到Godaddy免费空间
因为在Godaddy上每注册一个域名,就会免费提供一个容量10G,每月流量300G的免费空间,在页面上方会有一个大大的广告,所以很少有人会用这个免费空间来建立网站,但用来备份VPS上的数据却是很适合的,服务器之间的速度是非常快的,几十M的数据传输,也是一瞬间的事儿。
这种方式的原理是将网站/博客的数据库和数据打包,通过FTP的方式上传到Godaddy的免费空间上,所以先需要在VPS上安装一个lftp,登陆到SSH客户端,输入:
每天自动备份数据库
首先建立一个自动备份数据库的脚本,内容如下:
#!/bin/bash
/usr/local/mysql/bin/mysqldump -uusername -ppassword --databases blog > /home/wwwroot/backup/databackup_$(date +%Y%m%d).sql tar zPcf /home/wwwroot/backup/databackup_$(date +%Y%m%d).sql.tar.gz /home/wwwroot/backup /usr/bin/lftp -u ftpusername,ftppassword ftpip/backup -e "put /home/wwwroot/backup/databackup_$(date +%Y%m%d).sql.tar.gz;exit" rm -r /home/wwwroot/backup/* |
第一段中需要将username和password替换成数据库的用户名和密码,注意与-u和-p之间不要有空格,意思是备份数据库,并在/home/wwwrott/backup下生成一个按日期命令的文件。可以先通过SSH客户端或WinSCP来查看mysqldump是否在/usr/local/mysql/bin/目录下。将/home/wwwroot/backup/修改为自己的目录。
第二段是将这个backup中的文件(其实就是刚刚的备份)压缩。
第三段中需要将ftpusername、ftppassword、ftpip分别替换成Godaddy中FTP的连接信息,意思是将第二段中打好的压缩包上传到Godaddy的免费空间上去。可以直接上传到根目录,不过最好是在Godaddy中新建一个FTP帐号和目录来保存这些备份。
第四段是将backup这个目录中所有的文件删除。
建议使用WinSCP来建立脚本,因为WinSCP中带的编辑器有点类似记事本,使用起来比较方便,比如在/usr/local/nginx/conf目录中建立一个名为dbbackup.sh的文件,然后将上述脚本代码拷进去,把一些信息修改为自己的后保存即可。
检查脚本运行,可以直接在SSH客户端中输入:
sh /usr/local/nginx/conf/dbbackup |
检查脚本运行是否成功。
使用SSH客户端进入到dbbackup.sh所在的目录,修改脚本权限:
然后将dbbackup.sh添加到计划任务当中:
按“i”键编辑,并添加一行:
0 0 * * * sh /usr/local/nginx/conf/dabackup.sh |
输入完成后按ESC键退出编辑,输入:wq保存,建立的这个计划任务会保存在/var/spool/cron/root中。意思是每天0点0分时自动运行这个脚本实现每天自动数据库的备份。
每周自动备份博客/网站数据
同样,先建立脚本:
#!/bin/bash
tar zPcf /home/wwwroot/backup/blogbackup_$(date +%Y%m%d).tar.gz /home/wwwroot/ /usr/bin/lftp -u ftpusername,ftppassword ftpip/backup -e "put /home/wwwroot/backup/blogbackup_$(date +%Y%m%d).tar.gz;exit" rm -r /home/wwwroot/backup/* |
同样需要将ftpusername、ftppassword、ftpip分别替换成Godaddy中FTP的连接信息,将/home/wwwroot/修改为你需要备份的目录,保存为blogbackup.sh,然后测试脚本是否可以正常运行。
修改脚本权限:
添加计划任务:
添加一行信息:
0 0 * * 1 sh /usr/local/nginx/conf/blogbackup.sh |
意思为每周备份一次数据。
使用dropbox备份VPS
dropbox可以在linux中安装,用来同步网站的数据,但因为dropbox已经被和谐掉了,所以如果你的VPS在国内,就不要用这种方法了。
安装方法如下:
用SSH客户端登陆,进入root目录:
下载dropbox程序:
wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86 |
解压缩:
运行dropbox:
~/.dropbox-dist/dropboxd & |
运行后,会出现一串URL地址,将这串URL地址复制,出来,粘贴到你的浏览器中运行一下,因为dropbox已经被墙了,所以怎么访问需要自己想办法了。
进入dropbox
备份整个wwwroot目录
然后打开dropbox的首页,登陆后就可以看到同步的数据了。
可是dropbox运行所需要的内存很大,大约会占140M的内存,所以并不适合一直开着,那么我们也可以建立一个计划任务来让dropbox定时运行,再定时关闭。
在~/.dropbox/中建立脚本:
#!/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 |
修改脚本权限:
chmod 755 ~/.dropbox/dropbox.sh |
建立计划任务:
添加两条内容:
0 1 * * * sh /root/.dropbox/dropbox.sh restart
0 6 * * * sh /root/.dropbox/dropbox.sh stop |
:wq保存,这样dropbox就会自动在每天1点运行,6点关闭。
删除dropbox的方法:
# sh /root/.dropbox/dropbox.sh stop
# su - root
# cd
# rm -rf .dropbox .dropbox-dist Dropbox dropbox.tar.gz dbmakefakelib.py dbreadconfig.py | |