从旧的多站点安装恢复失败

恢复流程是否有变更,影响了多站点环境的备份?

今天尝试将一个站点在不同服务器之间迁移。旧服务器是多站点安装,前端使用 nginx 处理 HTTPS 封装,且已启用 force_https

新服务器是标准安装的独立版本,使用 Let’s Encrypt。

检查备份文件后发现,原始上传内容确实存在,但似乎并未被还原到新服务器的文件系统中。站点中图片的引用仍指向旧多站点的“secondsite”,因此路径指向 /uploads/secondsite/original,而非 /uploads/default/original

已通过图形界面和命令行尝试恢复,以确保万无一失。我计划进一步排查此问题,但认为目前值得先在 Support 频道发帖。若有人能确认这是否仍属于受支持的场景,我将把该问题移至 #contribute:bug。

此前该操作是可行的,但我至少有一年(甚至更久)未进行过此类操作。

所以文件确实存在,但位置不对?数据库指向的是默认站点而不是第二个站点?这听起来像是一个 bug,不过我想你可以直接重命名目录?还是说备份里根本没包含上传的文件?

它们位于备份归档中,但从未进入文件系统。

太奇怪了!听起来像是个漏洞。而且两个系统都没有配置 S3 上传?

正确。我稍后会进行更多测试。

这出乎意料。有机会让我看一下备份文件吗?否则,如果你想自己调试这个问题,请查看 https://github.com/discourse/discourse/blob/master/lib/backup_restore/uploads_restorer.rb。

@team 愿意深入探讨这类问题,这真的很棒。@tgxworld 上周帮我解决了一个边缘情况的问题。:tada: