旧的多站点安装恢复失败

恢复过程中是否发生了某些变更,从而影响了多站点环境的备份?

今天尝试在服务器之间迁移站点。旧服务器是多站点安装,前面有 Nginx 处理 HTTPS 封装,并且已启用 force_https

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

检查备份文件时,发现原始上传文件确实存在,但它们似乎并未被恢复到新服务器的文件系统中。站点中各处对图片的引用仍指向旧多站点中的“secondsite”,因此路径指向 /uploads/secondsite/original,而不是 /uploads/default/original

已尝试通过 GUI 和命令行进行恢复操作。我打算进一步深入调查,但认为目前先在 Support 频道发布此问题是值得的。如果有人能确认这是否仍属于受支持的场景,我将把问题移至 bug 频道。

这此前是可行的,但我至少有一年(甚至更久)没有做过此类操作了。

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

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

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

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

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

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