首页 > 其他分享 >Discourse 的无效附件清理

Discourse 的无效附件清理

时间:2023-09-07 23:11:15浏览次数:45  
标签:无效 清理 查询 Discourse 附件 服务器 image

Discourse 对上传的附件会进行清理,对于一些没有任何被引用的附件,Discourse 会认为是垃圾而清理掉。

原因应该是为了降低存储空间的使用,但是我们目前使用的是 S3 ,所以对存储空间并没有太多的要求。

根据官方的说法,如果满足下面的条件的上传附件将会被清理掉:

https://github.com/discourse/discourse/blob/master/app/jobs/scheduled/clean_up_uploads.rb

TL;DR: an image is orphaned if and only if it’s not referenced

  • in the latest version of a post
  • in a draft
  • in a queued post
  • in a logo site setting
  • in a custom emoji
  • in a theme
  • in a user avatar/background/card image
  • in a category logo/background image

官方的讨论地址为:How to make an image orphaned so that it gets removed? - support - Discourse Meta

通过代码,我们会看到,Discourse 使用了一个查询来判断附件是否被引用。

这个表是:upload_references

如果附件没有被关联到主题中,这个附件就会被认为是没有关联的附件而被清理掉。

 

2023-09-07_10-28-53

 

根据我们备份恢复的情况来看,我们估计可能是这个表 upload_references 丢数据了,导致 uploads 中标的数据被清理掉了。

本地查询

我们本地查询了下操作前 3 天的记录。

发现这个表中有:9000 多条记录。

 

2023-09-07_10-30-29

 

服务器查询

同时,我们对服务器上的表进行了查询。

查询结果返回的是:6000 多。

很明显这里有差距,那肯定是在恢复的过程中可能丢数据了。

2023-09-07_10-31-11

我们需要做的就是把本地表中的数据恢复到服务器上。

 

运行 SQL: select count(*) from upload_references;

来查看下服务器上的记录,貌似服务器上的参考引用全部被恢复了。

2023-09-07_10-38-09

因为我们禁用了自动清理程序,所以我们现在应该可以把自动清理进程打开了。

 

https://www.isharkfly.com/t/discourse/14713

标签:无效,清理,查询,Discourse,附件,服务器,image
From: https://www.cnblogs.com/huyuchengus/p/17686341.html

相关文章

  • java 支持 超大上G,多附件上传插件
    ​ javaweb上传文件上传文件的jsp中的部分上传文件同样可以使用form表单向后端发请求,也可以使用ajax向后端发请求    1. 通过form表单向后端发送请求         <formid="postForm" action="${pageContext.request.contextPath}/UploadServlet" method="pos......
  • WebUploader 支持 超大上G,多附件上传
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • 关于“ora-01483:DATE或NUMBER赋值变量的长度无效”的问题
    在建的表结构中有一个字段类型为varchar2(4000),在页面输入的文字并不多但是后台却报:关于“ora-01483:DATE或NUMBER赋值变量的长度无效”错误网上查了一下,最后总结自己可能的原因是:首先说一下我的那个环境:数据库服务器是oracle,采用hibernate方式保存,页面表单采用的多行文本域,整个项目......
  • .NET Core 在其上下文中,该请求的地址无效。
    .NETCore在其上下文中,该请求的地址无效。看了端口,发现没被占用,后来发现是IP地址变了改成正确的IP就可以了。......
  • vxe-table 的 setActiveRow() 无效
    问题vxe-table的setActiveRow(row)方法无效。解决检查之后发现,vxe-column上忘记写:edit-render="{}。因为#edit="{row}"插槽必须要写:edit-render="{}......
  • 百度盘下载时:本地路径无效 解决方法
     找了好的办法都不行,直接在设置中改下载路径也不行。现在我找到的只有一个可靠办法:重新下载文件太大了,具体是哪个文件夹少东西?需要:1、登录电脑版,百度云盘。2、选择下载文件夹,右击-->选择:详细信息3、稍等会,可看到文件大小、多少个文件、多少个文件夹,4、和下载本地的文件做......
  • SpringCloud 支持 超大上G,多附件上传
    ​ 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。pub......
  • c#.net 支持 超大上G,多附件上传
    ​ 以ASP.NETCoreWebAPI 作后端 API ,用 Vue 构建前端页面,用 Axios 从前端访问后端 API,包括文件的上传和下载。 准备文件上传的API #region 文件上传  可以带参数        [HttpPost("upload")]        publicJsonResultuploadProject(I......
  • mybatis plus 3.4以上分页无效问题,limit一直加不上,MybatisPlusInterceptor无效
    解决方案1、已注册@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptor=newMybatisPlusInterceptor();PaginationInnerInterceptorpaginationInnerInterceptor=newPaginationInnerInterceptor(D......
  • 如何通过Exchange ECP配置附件阻止策略
    背景需求通过ExchangeControlPanel(ECP)配置带特定后缀名的附件能否通过网页端Outlook(OWA)打开。操作步骤打开Exchange管理控制台,然后在控制台树中导航到服务器配置|客户端访问。接下来,从控制台的中下窗格中选择OWA(默认网站)列表,然后单击“操作”窗格中的“属性”链接。单击“自......