之前因为访问速度换到自搭建不蒜子,丢失了之前的所有数据。星辰写了一个转换的项目,可以将原有不蒜子的数据无痛转移到自搭建的上面来。下面我们来实操一下吧!

项目

自搭建不蒜子教程

迁移旧版不蒜子项目

请确保已经搭建自搭建不蒜子,本文由自搭建不蒜子项目作者星辰同学手把手指导。

停止运行不蒜子

ssh连接服务器,然后cd进入不蒜子的目录,然后执行docker-compose down把容器停止。

停止busuanzi

备份dump.rdb

为了避免造成不可挽回的损失,我们首先需要备份原来的数据文件。以宝塔为例。

因为最初使用docker-compose来部署的,数据库在data文件夹下。

数据库

下载/data/redius/dump.rdb

下载数据库文件

修改docker-compose

添加端口给redius,将容器内 redis的 6379 映射到宿主机的 16379上

端口

1
2
ports:
- "127.0.0.1:16379:6379"

添加完重新执行 docker-compose up -d

运行容器

下载转换项目

到版本中下载根据你的服务器下载对应的编译的版本

下载编译的文件

大多数情况下,是busuanzi-sync-linux-amd64-v0.0.4这个文件。

下载env文件

下载env文件

内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 在此处指定您的博客 sitemap 地址
SITEMAP_URL: https://you.blog.site/sitemap.xml

# 线程数 避免过高导致 QPS 限制 / 不要超过5
THREADS: 2
# 单 URL 最大重试次数
MAX_RETRY: 10

REDIS_ADDR: 127.0.0.1:16379
REDIS_DB: 0
REDIS_PWD: ""
REDIS_PREFIX: bsz
REDIS_TLS: false

# 路径样式 与加密方案
BSZ_PATH_STYLE: true
BSZ_ENCRYPT: MD516

修改里面的内容。

其中sitemap例如我的地址是:https://blog.zhheo.com/sitemap.xml

如果你使用过转换工具

如果你根据之前的教程使用过转换工具升级数据方案,那么

REDIS_PREFIX: bsz_transfer

BSZ_PATH_STYLE: false

BSZ_ENCRYPT: MD532

上传项目到服务器

在项目根目录下新建一个busuanzi-sync的文件夹

新建文件夹

.env和可执行文件上传到此文件夹,.env就是刚才编辑的那个文件env,重命名成.env即可。

上传项目

开始运行

ssh使用cd进入busuanzi-sync文件夹,然后运行可执行文件。

例如

执行项目

如果你的服务器不能访问不蒜子

如果你的服务器不能访问不蒜子,提示curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to busuanzi.ibruce.info:443,可以尝试本地来跑。

如果你不想直接在本地系统安装Redis,可以通过Docker来快速安装和运行Redis容器。这种方法具有环境隔离的优势,而且操作简单。以下是通过Docker安装Redis并加载dump.rdb文件的详细步骤:

1. 安装Docker

首先,确保你已经在本地机器上安装了Docker。如果还未安装Docker,你可以前往Docker官方文档下载并安装Docker。

2. 启动redius容器

创建一个文件夹,然后将rdb文件放进去

例如:/Users/zhheo/Downloads/redis-data/dump.rdb

打开终端并拉取最新的Redis镜像:

1
2
3
4
docker run -d --name redis-server \
-p 16379:6379 \
-v /Users/zhheo/Downloads/redis-data:/data \
redis

这里面Users/zhheo/Downloads/更改为你的dump所在的本地路径

确保看到容器正在运行,并且本地的16379端口已经映射。接下来,你可以按照教程中的步骤,配置.env文件然后运行busuanzi-sync工具即可完成数据转换。

执行脚本

同步完成后停止本地的docker容器,然后我们可以找到本地的新的dump.rdb文件,然后在服务器不蒜子和不蒜子redius关闭的情况下,将本地修改后的dump.rdb文件替换服务器上的dump.rdb,然后启动服务器上的不蒜子。

执行脚本时候的过程

执行脚本

此过程极其耗费时间。并且如果你的数据越多,此过程就越费时间。

在m1pro本地docker下,100-200wUV数据,耗时大概十分多钟。

然后就开始请求pv数据,请求pv的阶段就有进度条了:

请求pv

会根据你的env文件配置的请求速率来请求数据。(默认一秒两个)

大功告成