从我们开始学习建站开始,不论我们是用免费的虚拟主机,还是省吃俭用购买的付费主机,以及我们在更大的项目需要转向VPS或者服务器存储;不论我们是不是技术科班出身,还是跟老左一样,看到网友们都有自己的网站于是热情澎湃的也搭建一个玩玩;不论我们的网站是大还是小,有盈利还是没有盈利,都要学会基本的自我维护,尤其是网站数据的备份。
我们不要过分的依赖和信任主机商给我们提供的备份,即便我们购买的很牛、很贵的服务商的产品,他们也可能会由于各种的可能性导致数据丢失或者奔溃的情况,我们可以选择定期手工备份或者用一定的技术自动备份,一般前者针对数据量不大的个人网站,后者对于项目比较多希望自动管理的站点可以实施自动备份。
在老左博客中,已经有不少的关于网站、VPS备份的文章,有些简单的手工备份文件和数据库导出,有些比较高端的同步增量备份,对于我们用户来说,选择一种适合自己的就可以,毕竟我们只需要学会使用以及结果实现就可以。
1、配置RSYNC实现定时同步镜像VPS网站备份 替换增量备份文件
因为最近一段时间老左在玩以前购买的Godaddy经济主机,没有建站的需求,但可以用来备份我们的VPS中的网站存储使用,个人认为备份到自己的主机中的文件比依托第三方的备份存储安全很多,你认为呢?
在众多的网上流传的自动备份脚本中,老左认为军哥的自动备份FTP上传脚本还是比较好的,可以自动将数据库和网页文件分批打包,然后定时上传到指定的FTP主机中。所以,在这篇文章中,详解这个脚本的实际使用。
第一、准备工作
我们需要准备一台FTP主机,确保可以用FTP工具链接打开的,注意密码不要搞错。比如我手上的这台主机用FTP连接之后是这样的。
我们先确认下FTP主机账户是否正确,以及需要得到一个备份目录,这里我们需要的是HTTPDOCS,不是每个主机都是一样的,我们必须要备份到这个目录下,或者在里面的文件夹都可以。(有些可能是WWWROOT)
其次,我们需要将VPS环境安装lftp,用于上传文件的应用使用。
yum -y install lftp
比如在centos环境中执行上面的yum脚本运行安装,如果是debian则修改成apt-get
再次,我们需要在VPS环境中创建一个文件夹,用于备份文件存储,比如在/www/backup。原理就是执行脚本之后,将我们的网站和数据库先备份到/www/backup中,然后利用脚本LFTP上传到FTP空间。
第二、编辑备份脚本
https://soft.laozuo.org/backup/backup.sh
在上面的脚本中,我们需要先下载到本地,然后编辑(不要用记事本编辑),用editplus或者sublime编辑器。这里需要逐一解释下使用,因为关乎到我们的VPS路径和实际的配置不同,往往新手很容易出错。
我们先从上面开始看,一定要注意修改配置,Backup_Dir代表我们当前的网站在VPS中的文件夹路径,根据实际的情况修改。这里是写了备份2个网站,如果我们只需要备份一个网站,那就去掉一行,注意后面的参数1、2,以及多个网站一次类推。
MYSQL数据库信息,中间部分需要写上ROOT信息的MYSQL账户,这样确保能够备份完整,下面是写上需要备份站点的数据库名,如果只要备份一个,我们就去掉一行,如果多个,增加多行,注意参数。
这里也比较关键,需要填写我们在准备工作时候准备的FTP账户,尤其是FTP_BackupDir我们需要对应直接FTP工具打开后看到的文件存储目录,根据实际的情况不是每个主机商都一样的。
在这里我们需要注意2个问题,一个是如果我们只要备份一个站点,那多余的一行要去掉,因为默认老左是写了2个,以便区别,如果有多个站点的时候备份目录写法。以及我们需要注意目录问题,在这个脚本中,我的目录在www中,有些是在home中,有些在var中,各不相同,我们需要根据自己的实际情况,然后修改自己的路径。(认真检查)
第三、部署测试备份
修改没有问题之后,我们就上传到VPS中的root目录中。我们可以测试下是不是可以备份。
sh /root/backup.sh
我们可以看到执行测试备份之后,执行压缩、上传过程。
第四、部署自动定时备份
我们将脚本加入到crontab中可以实现定时备份,比如我们设置每天凌晨1点备份。
crontab -e
打开crontab文件,然后添加
0 1 * * * /root/backup.sh
可以实现每天定时备份,如果我们不需要这么频繁,也可以修改定时的时间,比如每周某个时间备份执行。前提是我们需要已经安装了crontab。看看我这边测试的备份数据。
在老左的FTP空间里,可以看到三天的备份数据,数据库和文件是分开打包的,如果需要就可以下载到本地。
总结,如果我们站点较小或者也不是很忙,可以手工备份,自动备份的设置我们可以先在测试机器测试,然后再部署,虽然这个FTP备份的脚本比较简单,但是还是需要先测试完善后部署的,我们看到任何教程,即便老左测试发布过,但我们自己使用的时候也需要测试确保没问题。