先向张童靴说一声抱歉,之前答应了发表一篇关于网站数据备份的文章,奈何转身就忘记了。身为老师因疫情耽搁的课程太多,稳定后不是出差就是各种课,虽说最近文章没断,但水份都较大,还要感谢小伙伴们都理解和支持!
注意备份
数据备份是保护数据的重要过程。它可以帮助在硬件故障、人为错误、病毒感染或其它原因导致数据丢失中恢复数据。数据备份对于组织来说是至关重要的,因为数据是组织的核心资产,如果丢失数据可能导致停工、损失信誉甚至财务损失。通过定期备份数据,可以保证在灾难发生时可尽快恢复数据和业务运行。
数据备份通常分为本地备份、异地备份。
本地备份相对简单,在服务器内操作就行了,恢复时也快捷。缺点是服务器一旦出现问题,很有可能导致备份数据丢失。
异地备份相对复杂,有时候需要人为干预才可以。最简单的异地备份,就是服务器备份好数据之后,下载一份到本地上。
本文讨论的是,通过哪些插件可以实现全自动的异地备份。
尽可能保障免代码操作!
静态博客
静态博客是指 Hexo/Hugo 一类的博客框架,根据大家反馈,一般会有两种部署方式:本地部署、异地部署。
本地部署是指在本地上搭建博客环境,再将生成的文件传至网络上进行呈现。
异地部署则是借助如 GitHub Actions 等方式自动生成页面文件并完成部署「杜老师说使用该种方法」
本地部署建议两种备份方案,一种是借助同步盘,如坚果盘,实现数据更新后即备份,出现问题后可随时恢复;或将博客整站源码上传至 GitHub,作为备份使用。
异地部署无需考虑数据备份,因为 GitHub 等平台托管相对更有保障,如想进一步提升数据安全性,可以考虑数据更新时使用新分支,或者同时用多平台备份。
这里需要强调的是,静态博客仅需备份整站源码,无需备份生成页面,这样可以减少备份文件体积,提高备份效率。
推荐本地备份的工具有:百度网盘、坚果盘等,以上客户端都有自动备份的功能。
推荐异地备份工具是 GitHub 官方的 Desktop,虽然是英文版,不过操作比较简单。当然也可使用代码直接同步!
动态网站
动态网站因为页面语言较多,这里仅举例 PHP+MySQL 类型站点。该类型站点需分别备份源码文件和数据库,下面是以去不图床为例,配合宝塔面板,分享备份思路。
去不图床由三部分数据构成:整站源码、图片数据及数据库。
整站源码本地备份可以借助计划任务,如需异地备份,请先在软件商店中,添加宝塔插件,支持阿里云 OSS、谷歌存储、亚马逊 S3、七牛存储、谷歌网盘、腾讯云 COS、百度存储、华为存储、又拍存储、京东存储、微软 OneDrive 等。杜老师策略是每周本地备份,每月异地备份到群晖上。具体备份周期,参考整站代码变动情况,比如去不图床如果没有代码变动,则不需要频繁备份。
图片因数据量较大,且会频繁更新,故杜老师直接用实时异地多节点备份。实施的步骤是:首先将群晖挂载到服务器上,然后使用 rsync
命令将新图片同步至群晖,群晖内使用同步套件上传至阿里云 OSS、腾讯云 COS 及京东云存储。当服务器出现问题,可以通过群晖备份快速恢复。如果内部网络出现问题,也可快速切换至阿里云等节点实现不间断访问,保障图片外链服务稳定!
数据库的变动较大,但是量级较少,所以杜老师的备份周期较短,每小时会本地备份一次,每天异地备份到群晖上,每月被分到阿里云 OSS 及腾讯云 COS。
如果是 WordPress 这种内部文件变动「wp-content 文件夹经常变动」可以使用宝塔计划任务中的目录备份功能,仅备份变动的文件即可。
补充说明
以上强调了备份重要性,及多种数据的备份方法。除此之外,还要考虑到备份文件的空间占用,以及数据恢复策略。
备份文件并未越多越好,虽然更加安全,但也会增加存储空间的占用,所以保留一定数量备份文件即可。杜老师的策略是最大备份周期三份起七份止。比如整站源码本地保留七份,异地保留三份;数据库则本地保留 168 份,群晖保留四份,异地保留三份。
当需要恢复数据时,也需要先做好恢复前数据的备份。毕竟相比备份数据,当前的数据时间点更新,毕竟会产生一定的数据差异,做好恢复前数据的备份可最大限度的防止数据丢失。
最后需要提醒的是,数据断层变动「将数据恢复到上个节点」操作可能导致网站访问出现问题,一般都是出现在缓存上,可通过清理本地或者中间件「如 Redis」缓存数据解决。
条评论