将上传内容从 S3 迁移到本地

对我来说,没有一个方法能100%奏效,真遗憾。你最后是怎么做的?

1 个赞

3.x 版本中有什么方法可以实现此功能吗?我仍然有大量图片存储在 S3 上,需要找到一种方法将它们恢复到本地。欢迎提供建议。(rake uploads:migrate_from_s3 命令已不存在)

我已经将所有设置改为从本地运行(只有备份在 S3 上)。发现许多帖子仍然指向 S3,链接如下:

<img src="//x.amazonaws.com/original/1X/afda2721f64341ca46576020acae7aaee92bd9d3.PNG" width="308" height="206">

指向:

https://xxx.amazonaws.com/original/1X/afda2721f64341ca46576020acae7aaee92bd9d3.PNG

1 个赞

您对此事有什么建议吗?我真的很厌倦每次更新或更改时都遇到问题 :slight_smile:

未解决。如果 Discourse 有解决方案那就太好了。

1 个赞

哦。如果这是您的网站,并且您的文件存储在 S3 上,那么您应该能够启用 S3,启用 Enable hidden setting to include S3 uploads in the backups 中描述的隐藏设置,进行备份,将配置更改为本地图片,然后恢复备份。

2 个赞

很想知道是否有人能够让它正常工作。

它适用于从 Discourse.org 托管迁移到自托管的每个站点(并且在获取备份之前已开启该设置)。

这有点棘手,因为您必须在创建备份时设置好所有 S3 设置(在您的 YML 文件中),然后在执行还原之前将它们全部关闭(在所有地方,包括数据库,如果您曾经在那里设置过它们)。

1 个赞

这是一个非常合乎逻辑的方法,但它不适用于使用 cloudflare R2 的用户。或者这个问题只发生在我身上。当我进行备份时,我也开启了隐藏设置。不幸的是,它不包括 R2 中的文件备份。它在这里出现错误:Uploads in cloudflare R2 are not added to the backup: Failed to download ******* because Aws::S3::Errors::Http501Error

1 个赞

文档和您的经验表明 R2 不受支持,因此您需要以其他方式解决问题。

我以为它对我来说是有效的,但我没有非常仔细地测试过,也没有在简单的冒烟测试之外使用过它。

如果备份无法从 R2 下载文件,那么您将需要使用其他工具从 R2 检索文件,然后将它们推送到您的新存储桶,然后手动更新数据库(我认为您可以使用 remap rake 任务搜索相关主题)。

这是一个复杂的过程,因此您需要对 R2、S3 和 Discourse 的 Uploads 有相当的了解。在论坛上获得解决方案可能很难,因为您需要足够具体地解释您遇到的确切问题。

3 个赞

我手动下载文件并将其上传到服务器。对于那些询问如何操作的人,您可以使用 winscp 程序连接到 S3 帐户。之后,您可以轻松地将文件导入到您的计算机。之后,我将其上传到本地并重新创建了主题,它显示了 0 篇帖子。它没有采取行动。我更改了某次,但什么也没找到。也许我错过了什么,我想在再次测试之前不要说出来,也许是我的错。如果我再试一次,我会写下结果。谢谢。

1 个赞

将文件上传到服务器只是问题(简单)的一部分。

您可以通过以下方式查看上传的文件:

cd /var/discourse
./launcher enter app
rails c
Upload.pluck(:url)

这将显示您上传文件的 URL。然后,您需要修改所有这些上传文件,以便它们具有指向新存储桶的新路径。您可以尝试搜索 remap 命令。我认为它可能会起作用。

我不确定这是否意味着什么。

1 个赞

你能告诉我如何做到这一点吗?你的意思是只将备份中的“包含S3上传”设置改为false,还是其他什么?

1 个赞

为上传配置 S3 兼容对象存储提供商 介绍了如何通过将配置添加到 app.yml 来配置 S3。如果你没有这样做,请在站点设置中取消设置所有与 S3 相关的内容,然后按此方法操作。

如果你已按此方法操作,请注释掉这些设置(或者可能只注释掉 use_s3 和 upload bucket)。

1 个赞