# 恢复后修复或清理损坏的链接和资源

**URL:** <https://meta.discourse.org/t/fixing-or-cleaning-up-broken-links-and-assets-after-a-restore/229835>\
**Category:** Product Support\
**Created:** [2022 年6 月 13 日 17:20 UTC](https://meta.discourse.org/t/fixing-or-cleaning-up-broken-links-and-assets-after-a-restore/229835 "2022-06-13T17:20:48Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

作者： ![RBoy](https://avatars.discourse-cdn.com/v4/letter/r/2bfe46/32.png) [@RBoy](https://meta.discourse.org/u/RBoy)\
发布日期： [2022 年6 月 13 日 17:20 UTC](https://meta.discourse.org/t/fixing-or-cleaning-up-broken-links-and-assets-after-a-restore/229835/1 "2022-06-13T17:20:48Z")

</div>

我们遇到了一次服务器崩溃，不得不创建新服务器并从备份中恢复。这是一个艰苦的过程，[有关发生的情况以及我们如何恢复的详细信息请参见此处](https://meta.discourse.org/t/help-restoring-system-hung-at-midnight/229486/)。

现在恢复之后（关键是禁用 S3 上传），帖子中所有附件的链接都已损坏（404 错误）。我已搜索论坛但找不到解决方案，希望有人能指引我正确的方向。

我有两个选择：

1. 我能否修复这些指向帖子中嵌入的附件的损坏的 `short-url` 链接（所有损坏的链接都是帖子中的附件；嵌入的图片可以正常渲染，其他内部链接也可以正常工作）？

例如，论坛帖子中附件的 URL 显示为 `https://XYZ.com/uploads/short-url/phu1HOLvkE8LWpkKYfnMPSWsvHh.zip`。当我在帖子中点击附件链接时（导致 404），我在日志中看到的是这个：

> Message (5 copies reported)
> 
> Failed to process hijacked response correctly : Errno::ENOENT : No such file or directory @ rb\_sysopen - /XXXXX.s3.dualstack.us-east-1.amazonaws.com/optimized/1X/46728e07f9819907d1b18387bf02ea7fc25c7981\_2\_32x32.ico
> 
> Backtrace
> 
> /var/www/discourse/app/controllers/static\_controller.rb:160:in `read' /var/www/discourse/app/controllers/static_controller.rb:160:in `block (2 levels) in favicon’  
> /var/www/discourse/lib/distributed\_memoizer.rb:16:in `block in memoize' /var/www/discourse/lib/distributed_mutex.rb:33:in `block in synchronize’  
> /var/www/discourse/lib/distributed\_mutex.rb:29:in `synchronize' /var/www/discourse/lib/distributed_mutex.rb:29:in `synchronize’  
> /var/www/discourse/lib/distributed\_mutex.rb:14:in `synchronize' /var/www/discourse/lib/distributed_memoizer.rb:12:in `memoize’  
> /var/www/discourse/app/controllers/static\_controller.rb:138:in `block in favicon' /var/www/discourse/lib/hijack.rb:56:in `instance\_eval’

我非常希望在禁用 S3 上传选项并从备份恢复服务器后，有一种方法可以修复这些 `short-url` 链接。重新烘焙帖子并没有解决问题。

1. 如果出于某种原因，这是一个死胡同，无法大规模修复，现在我在 S3 云端有数千个孤立的附件，是否有办法清理它们并释放空间？是否有办法让 Discourse 扫描其 S3 上传存储桶并清除所有孤立的资产？

---

_[View the full topic](https://meta.discourse.org/t/fixing-or-cleaning-up-broken-links-and-assets-after-a-restore/229835)._
