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

Discourse 的无效附件清理

时间:2023-09-07 23:33:43浏览次数:47  
标签:无效 清理 查询 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

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

 

Discourse 的无效附件清理_上传

 

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

本地查询

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

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

 

Discourse 的无效附件清理_存储空间_02

 

服务器查询

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

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

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

Discourse 的无效附件清理_服务器_03

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

 

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

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

Discourse 的无效附件清理_上传_04

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

 

标签:无效,清理,查询,Discourse,附件,服务器,image
From: https://blog.51cto.com/cwikius/7402830

相关文章

  • Discourse 附件无法显示的跟进
    今天登录表以后,发现数据又被清理了部分。然后我们又重新使用SQL导入了数据。这个让我们感觉Discourse的系统中应该设置了自动清理程序,在这个自动清理程序中会对认为没有使用的附件或者图片进行清理。因为我们更换了存储空间,所以这会导致自动清理程序可能会出现误判,因为路径或者......
  • Discourse 应该保留多少备份
    近期,我们在对Discourse进行恢复的时候,我们发现新的备份可能会导致不是所有的数据都能恢复到服务上。这时候我们应该考虑让Discourse保留多少备份的问题?在默认情况下,我们设置Discourse的备份是保留5个。这是官方的默认值。  现在我们觉得这个值应该是太低了,如果系统运行故......
  • Discourse 附件无法显示的跟进
    今天登录表以后,发现数据又被清理了部分。然后我们又重新使用SQL导入了数据。这个让我们感觉Discourse的系统中应该设置了自动清理程序,在这个自动清理程序中会对认为没有使用的附件或者图片进行清理。因为我们更换了存储空间,所以这会导致自动清理程序可能会出现误判,因为路......
  • Discourse 的无效附件清理
    Discourse对上传的附件会进行清理,对于一些没有任何被引用的附件,Discourse会认为是垃圾而清理掉。原因应该是为了降低存储空间的使用,但是我们目前使用的是S3,所以对存储空间并没有太多的要求。根据官方的说法,如果满足下面的条件的上传附件将会被清理掉:https://github.com/dis......
  • 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、和下载本地的文件做......