Discourse S3备份图片消失的原因

我一开始的怀疑是正确的,因为我两个网站用了同一个S3桶,然后里面设置了 Clean up uploads

其实一开始我怀疑过这个设置可能会出问题,但是它功能上写的是删除没有被引用的上传,我S3桶的文件主站至少在用,哪怕备用站没有引用,也不至于会删除吧?

而且在备用站没有恢复备份和rebuild之前,两个站都是正常显示内容的,我根本都没有想到已经出现问题了

为什么有些老帖子里面的图片也被删除?因为我的备份站里面的图片地址竟然不是 CDN URL,而是真实链接,所以那些图片都打不开,所以实际上都没有被引用

太奇怪了,要知道我主站是新服务器,恢复备份之后都没有烘焙帖子,反而是正常的。暂时还在找为什么备用站没有用CDN URL链接的原因

用woker把r2的文件全部恢复了,然后重新从主站备份了一次,备用站的图片也全都正常了,不过备份还是关 Enable S3 uploads,我都不知道平时自动备份的有什么用,这个bug还没修复

而且还是没有找到为什么之前恢复备份后图片全部变成了真实链接而没有用CDN URL的原因

这个问题是在备份恢复的时候,程序会对附件进行扫描。

有时候我感觉附件表恢复不完整,这个时候会丢附件,然后扫描那边就会报错。

比如说你的附件表中可能有 1 万条记录,但在附件校验的时候在 6000 条记录的哪里出错了,然后后面的 4000 多条记录就丢了。

我们几次备份恢复都发现有这个问题,尤其是你网站还曾经换过域名的话,不少附件的 URL 和链接都不对。

目前我论坛所有帖子里的图片都正常显示,附件校验不知道是什么原理。

现在这自动生成的备份没法用 还真的挺担心服务器哪天炸了

我搓了一个简陋的方法用rclone每天把备份传云盘,算是没有s3的代替了
之前好一段时间 都是请某个管理员每天手动下载备份的

怎么弄的

定时执行rclone copy /var/discourse/shared/standalone/backups/default pan:/backup -P
我是另外部署了哪吒面板 然后设置的定时任务

rclone我挂载的是开了会员的pikpak 因为我这边onedrive分块上传有问题

你这只是把备份好的文件复制到云盘 我的问题是备份的时候需要关闭Enable S3 uploads 但平时使用要开启Enable S3 uploads

是的,官方的解释就是备份的恢复的时候关闭。

等全部弄好了再打开。

要不然就会遇到错误:

[2025-03-06 15:43:41] EXCEPTION: 648 of 3118 uploads are not migrated to S3. S3 migration failed for db 'default'.
[2025-03-06 15:43:41] 

整个恢复被中断。

现在还没有解决办法。

有两个解决方向,一个是备份的时候自动取消Enable S3 uploads设置,一个就是恢复备份的时候跳过这个EXCEPTION错误,感觉应该不是很难,为什么论坛的人都不上心

这个问题我感觉是解决不了。

提出这个问题的都好多年前了,现在说的还是先取消这个配置然后再备份和恢复。

感觉还是论坛生态太冷清了,论坛里好多功能也都有人提了六七年了,都没人理,最后回复的还是要去市场,我最近改了好几个官方组件,每个就改几行代码,轻松实现那些功能。

当初Flarum和discourse我犹豫了好久,当时两者差距不大,现在好多功能Flarum好多插件都已经实现了,虽然也是收费的,但是discourse都要去市场定制。

当时没有选 Flarum 的主要原因是 Flarum 的技术架构。

  • Web 服务器:Apache (需要 mod_rewrite) 或 Nginx。
  • PHP 7.4 及以上版本,需要启用 Fileinfo,Mbstring,OpenSSL,PDO,Tokenizer,XML,Ctype,JSON,GD 等 PHP 扩展。
  • MySQL 5.6+ 或 MariaDB 10.0.5+。
  • SSH (命令行) 访问,用于运行 Composer。

实在是不想再跑 PHP 的程序了。

论坛这种形态本来就属于比较夕阳化的产业了,现在都喜欢用小程序,小红书,头条这种快餐文化。

论坛就沦为一堆专业的人在讨论专业的事情,像天涯以前那种形态是不可能出现的了。

现在的人,更习惯在评论区吵架,也不太会有太多时间和精力来刷社区了。

在加上国内监管的问题,个人不让办,Docker 过不去,这生态已经被彻底压死了。