跳转到内容

备份与迁移

真遇 server 的全部数据(SQLite 数据库、媒体文件,以及服务器身份密钥)都在 data_dir 一个目录下。备份 = 复制这个目录,迁移 = 把它搬到新机器。

最稳妥的方式是先停止 server,再复制数据目录:

终端窗口
sudo systemctl stop gather-server # 或 docker stop gather-server
sudo cp -a /srv/gather/data /srv/gather/backup-$(date +%F)
sudo systemctl start gather-server
  • 直接复制整个 data_dir 即可;不要只复制部分文件。
  • 若不想停机,可用 SQLite 的一致性备份命令,再单独复制 media/:
终端窗口
sqlite3 /srv/gather/data/gather.db ".backup '/srv/gather/backup/gather.db'"
cp -a /srv/gather/data/media /srv/gather/backup/media
  • 建议保留多份、异地存放;数据目录内含服务器身份密钥,备份同时保留了服务器身份,请妥善保管。

把备份目录放回原位并重启:

终端窗口
sudo systemctl stop gather-server
sudo rm -rf /srv/gather/data
sudo cp -a /srv/gather/backup-2026-01-01 /srv/gather/data
sudo chown -R gather:gather /srv/gather/data
sudo systemctl start gather-server
  1. 在新机器上按 Docker 或二进制 安装好 server。
  2. 停止新旧两端的 server,把旧机器的 data_dir 完整复制到新机器。
  3. 调整配置:listen 按新机器网络设置;public_endpoint 改为新域名 / 地址;如服务器 id 不变则成员与数据全部保留。
  4. 启动新机器上的 server,确认可访问后再下线旧机器。

server_id 不变 + 数据目录完整迁移 = 同一服务器、同一身份。若同时更换 server_id,在目录视角会被当作新服务器。

若你还自建了注册处,它的数据在另一个数据目录中,需单独备份。注册处保存账号资料、邮箱与目录记录;它与 server 的数据相互独立。

自建与官方托管使用同一份数据组织方式,两者功能等价。官方托管数据的完整导出 / 导入工具随公开发布提供,届时即可把数据整包搬到自建服务器(或反向迁移)。