博客或网站的备份是很重要的一个工作,因为经常会有一些VPS和空间商倒闭或跑路。而备份很重要的一点是异地备份,因为如果把备份仍然放在VPS 上,很容易同博客一起全军覆没。如果每天手动将VPS上的数据备份,再下载到本身会耗费大量的时间和精力,这几天折腾VPS,在网上查了很多关于网站 备份的资料,总结出两种异地备份的方式,当然是自动进行的。
一种是通过脚本自动将数据打包通过FTP上传到Godaddy的免费空间上,另一种是使用dropbox来备份,这两种方式各有优缺点,下面来详细介绍一下。
自动将VPS数据备份到Godaddy免费空间
因为在Godaddy上每注册一个域名,就会免费提供一个容量10G,每月流量300G的免费空间,在页面上方会有一个大大的广告,所以很少有人会用这个免费空间来建立网站,但用来备份VPS上的数据却是很适合的,服务器之间的速度是非常快的,几十M的数据传输,也是一瞬间的事儿。
这种方式的原理是将网站/博客的数据库和数据打包,通过FTP的方式上传到Godaddy的免费空间上,所以先需要在VPS上安装一个lftp,登陆到SSH客户端,输入:
yum -y installlftp
每天自动备份数据库
首先建立一个自动备份数据库的脚本,内容如下:
#!/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所在的目录,修改脚本权限:
chmod +x dbbackup.sh
然后将dbbackup.sh添加到计划任务当中:
crontab –e
按”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,然后测试脚本是否可以正常运行。
修改脚本权限:
chmod +x blogbackup.sh
添加计划任务:
crontab –e
添加一行信息:
0 0 * * 1 sh /usr/local/nginx/conf/blogbackup.sh
意思为每周备份一次数据。