博客或网站的备份是很重要的一个工作,因为经常会有一些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

意思为每周备份一次数据。

使用dropbox备份VPS

dropbox可以在linux中安装,用来同步网站的数据,但因为dropbox已经被和谐掉了,所以如果你的VPS在国内,就不要用这种方法了。

安装方法如下:

用SSH客户端登陆,进入root目录:

cd

下载dropbox程序:

wget -O dropbox.tar.gz http://www.dropbox.com/download/?plat=lnx.x86

解压缩:

tar -zxof dropbox.tar.gz

运行dropbox:

~/.dropbox-dist/dropboxd &

运行后,会出现一串URL地址,将这串URL地址复制,出来,粘贴到你的浏览器中运行一下,因为dropbox已经被墙了,所以怎么访问需要自己想办法了。

进入dropbox

cd ~/Dropbox

备份整个wwwroot目录

ln -s /home/wwwroot

然后打开dropbox的首页,登陆后就可以看到同步的数据了。

博客搬家┆ VPS备份笔记-麦氪搜(iMacso.com)

可是dropbox运行所需要的内存很大,大约会占140M的内存,所以并不适合一直开着,那么我们也可以建立一个计划任务来让dropbox定时运行,再定时关闭。

博客搬家┆ VPS备份笔记-麦氪搜(iMacso.com)

在~/.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

建立计划任务:

crontab –e

添加两条内容:

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

转载自老耿的博客---http://www.laogeng.org