StarryCat
Astronomy
喵喵的灿烂星空

记博客的备份与迁移——Rsync 同步与 GCP 试用

不知不觉中博客已经一周年了,准确的说已经一年半了(这篇文章躺了一段时间了 :-D )。WordPress 博客的管理比较省心,该有的功能都有,不折腾能写就行!博客环境配置基本和刚搭建时差不多,博客备份严重依赖 vultr 的快照备份。因为搭建博客的 vps 用的是 vultr,在一些特殊月份会被大规模墙 ip :cry: ,不过域名没墙,一直靠 Cloudflare 的 CDN 苟。最近给谷歌账号绑上了外币银行卡,又遇上 rmb 美元汇率破 7 :twisted: ,囊中羞涩,准备把博客从 vultr 迁移到送 300 美元赠金免费一年的谷歌云(Google Cloud Platform)。

博客备份——Rsync 同步

使用 tar 和 mysqldump 备份

因为 vps 上没啥别的东西,过去就直接上 vultr 网页进行快照备份了。博客内容越来越多,这么不怎么保险,是应该单独备份博客内容了。了解了下 WordPress 博客备份,还不算麻烦,不外乎备份博客目录文件和备份数据库。博客是使用 LNMP 一键包安装的,其实作者是有给备份脚本的,在 LNMP 安装包下的 tools 目录里,其中的 backup.sh 就是备份脚本,脚本不复杂,主要就是使用 tar 打包压缩博客目录文件,使用 mysqldump 导出备份数据库。可以自己手动尝试一下。 :idea:

使用 Rsync 同步

Rsync 是一款强大的同步备份软件,支持增量备份。支持本地备份和远程备份(shell 模式和 daemon 模式)[1]。daemon 模式分服务端 Server 和客户端 Client,这里我们的 vps 是服务端,客户端是我们本地计算机,都需要安装 rsync。 :idea:

配置 Rsync 服务端

服务端需要常驻服务,默认监听 TCP 端口 873,需要额外配置一下(不是很麻烦)。

以下是我的 rsyncd.conf,仅供参考哈。

密码文件 rsyncd.secrets 的格式:username:passwd。其中 username 为配置文件 rsyncd.conf 中 auth users 设定的用户名,多个 username 分多行写,示例:

启动 rsync 服务端:

Rsync 命令的使用

在客户端我们使用 rsync 命令进行同步服务端备份,基本语法:

常用选项:

现在我们来试试! :idea:

rsync 还有众多功能选项,可自行 man rsync

博客迁移——GCP 试用

GCP(Google Cloud Platform),也就是谷歌云啦,由谷歌推出的云端服务平台。之前听说到谷歌云,听到的最多就是谷歌送你 300 美元免费用一年。谷歌的这个推广真是大方,不过也得到了想要效果,更多人了解到了谷歌的云端平台,并去尝试谷歌云,毕竟免费一年,不用白不用 ;-) 。这个活动已经有好几年了,现在申请的条件就是要有一个没有用过谷歌云,且绑定了外币银行卡的谷歌账号,然后就是到这里申请:https://cloud.google.com

和 vultr 对比

谷歌云最低配为台湾节点的机器,机房在台湾彰化县,作为对比的是 vultr 日本东京机房。

对比项GCP 台湾彰化vultr 日本东京
价格$5/mo$5/mo(不包括流量费)
CPU核心11
内存0.6GB1GB
磁盘10G HDD(可以换 SSD 和大小,费用会有所增加)25G SSD
流量出站流量中国大陆 $0.23/GB,入站流量免费1T
快照支持增量备份,5GB/mo(仅个别地区有)完全备份,限制在同等容量及以上的机器上恢复

为了更全面对比,找了个系统测试脚本[2]跑了下:

https://starrycat.me/wp-content/uploads/2019/08/14008.pnghttps://starrycat.me/wp-content/uploads/2019/08/14009.png

从上表和上面两张测试结果图可以看出,GCP 的配置和性能被同价位的 vultr 秒杀 :-P ,更直观的感受就是安装 LNMP 的时间了,谷歌云要两个多小时,vultr 只要四十分钟。不过谷歌云也不是没有优点的,那就是谷歌云免费一年嘿嘿 :oops: 。以每月最低配 5 美元来算,一年 12 个月,折算下来每月可用流量 80 多GB,还要啥自行车。还有一个优点就是谷歌云有台湾和香港节点,国内访问有很大优势。就我使用的台湾节点,电信联通基本走香港中转,而且香港到台湾这段走的谷歌自己的骨干网,延迟也不过多个十几毫秒;不过移动就不能看了,基本绕美。 :-D 下面是用站长工具进行测延迟:

https://starrycat.me/wp-content/uploads/2019/08/14010.pnghttps://starrycat.me/wp-content/uploads/2019/08/14011.png

嗯,谷歌绿油油的一片,除开移动,平均延迟基本在 70 毫秒内,这图总算能看了。

创建实例

点击左上角三道杠导航菜单,选择计算里的 Compute Engine,点击第一项 VM 实例,然后点击创建:

https://starrycat.me/wp-content/uploads/2019/08/14001.pnghttps://starrycat.me/wp-content/uploads/2019/08/14002.png

区域可选择的就比较多了,建议选 asia 开头的,机器类型最低配就是 0.6GB 的了。启动磁盘点更改可以选 SSD 和调整大小,价格也会增加:

https://starrycat.me/wp-content/uploads/2019/08/14003.png

身份和 API 访问权限默认,作为 web 服务器,需要防火墙允许 HTTP 和 HTTPS 流量。下面的更多选项可以根据自己需要选择,大部分后面都能再改:

https://starrycat.me/wp-content/uploads/2019/08/14004.png

安全里可以填后面连接实例需要的 SSH 公钥,网络里分配外部静态 IP。

SSH 密钥可以使用 ssh-keygen 生成,比如:

~/.ssh 目录生成私钥 test 文件,公钥 test.pub 文件,使用 root 用户名。把公钥 test.pub 文件里的内容填入下图的位置:

https://starrycat.me/wp-content/uploads/2019/08/14005.png

然后就是网络部分,主要就是分配一个固定 IP,其余部分默认。外部 IP 里选择创建 IP 地址,输入名称后点击保留就能分配一个 vultr 里熟悉的 IP 地址了:

https://starrycat.me/wp-content/uploads/2019/08/14006.pnghttps://starrycat.me/wp-content/uploads/2019/08/14007.png

连接实例

谷歌云的实例远程连接默认使用 ssh 密钥登录,比如使用上面生成的 root 用户登录:

如果你习惯用密码登录,则需要修改配置文件:

下次登陆就能够使用密码登录了,当然你要设置了密码。

谷歌云的 Debian 系统镜像相对纯净,加了谷歌云相关的 SDK 包,在测试安装 LNMP 过程中可以看到连系统的 locale 也没有设置,我们可以先设置下:

防火墙规则

谷歌云还有个优点,那就是作为云端服务平台,提供了更多服务和功能,还有丰富的 API 和完善的文档。这里的防火墙就是其中一点,支持设置复杂网络和防火墙规则。谷歌云的 Compute Engine 默认设置了两条隐式规则,即一条允许大部分出站流量和一条禁止大部分入站流量。在上面创建实例的过程中我们已经允许了 HTTP 和 HTTPS 流量了,所以我们搭建博客就不用再设置防火墙规则了。上面我们使用的 rsync 同步备份软件,如果要在谷歌云上也使用,我们需要允许 rsync 协议的流量,放行默认的 873 端口,所以我们要再添加一个防火墙规则。

点击左上角三道杠导航菜单,选择网络里的 VPC 网络,点击第三项防火墙规则:

https://starrycat.me/wp-content/uploads/2019/08/14012.pnghttps://starrycat.me/wp-content/uploads/2019/08/14013.png

可以看到默认已经有几条规则了,点击创建防火墙规则:

https://starrycat.me/wp-content/uploads/2019/08/14014.pnghttps://starrycat.me/wp-content/uploads/2019/08/14015.png

填写规则名称,优先级,数字越小应用的优先级越高,填写目标标记,可以让我们只应用到指定的实例。0.0.0.0/0 表示所有 IP 地址,rsync 协议为默认端口为 tcp:873。点击创建就能看到规则添加到列表里了。

最后我们还要再给实例添加标记以应用防火墙规则,选择我们的 test 实例,点击修改,然后找到网络标记,输入 rsync 回车后保存即可应用防火墙规则到实例:

https://starrycat.me/wp-content/uploads/2019/08/14016.pnghttps://starrycat.me/wp-content/uploads/2019/08/14017.png https://starrycat.me/wp-content/uploads/2019/08/14018.png

博客备份恢复

博客环境搭建依旧选择 LNMP 一键包,不过由于选择了谷歌云最低配的机器,内存只有 0.6GB,从源码编译安装 MySQL 8.0 不能通过,所以自己 fork 了一个版本,添加了在内存低于 1GB 以下可选择通过二进制安装。(我蠢了,这里可以先开一个高于 1GB 内存的机器,编译安装完后可以停止实例,然后修改机器配置为最低配再启动实例。)

现在使用 redis 加 WordPress 插件代替了之前的 memcached 扩展了,安装完后还是按以前的方法添加虚拟主机。 解压 WordPress 的网站备份压缩文件,移动到添加的虚拟主机的目录,修改目录权限,导入数据库:

如果 WordPress 数据库信息有更动,则需要编辑 wp-config.php,修改数据库名称、用户名、密码为新的。

(迁移完后完美打开网站,但一些文章页打不开,显示“此站点正遇到技术问题。”,倒腾了半天,最后一个个停用插件检查,发现是 Crayon Syntax Highlighter 这个代码高亮插件的问题,上次也遇到类似的问题,我居然忘了,也忘记后来怎么解决的了 :-P 。这个插件原作者已经两年没开发了,在新版本的 WordPress 上问题很多。最后找了个 fork 版本https://github.com/dalu/crayon-syntax-highlighter,可以打开文章页了,但是大部分语言高亮不能解析成功,算了凑合着用吧。)

赞赏

starrycat进行回复 取消回复

textsms
account_circle
email

喵喵的灿烂星空

记博客的备份与迁移——Rsync 同步与 GCP 试用
不知不觉中博客已经一周年了,准确的说已经一年半了(这篇文章躺了一段时间了 :-D )。WordPress 博客的管理比较省心,该有的功能都有,不折腾能写就行!博客环境配置基本和刚搭建时差不…
扫描二维码继续阅读
2019-09-02