Cloudflare R2中的上传未添加到备份:无法下载*******,因 Aws::S3::Errors::Http501Error

我正在尝试一些 Cloudflare 的功能,并考虑将来弃用 R2。因此,在检查备份时,我发现安装未包含在内,并且出现了错误。手动进行备份时,事务日志中会出现相同的错误。本地的图片和文件已备份,但 Cloudflare R2 中的图片未备份。

示例错误代码:

Failed to download original/1X/4b8754c367e54bc5271454a09b8bd4c1a8b882d5.png because Aws::S3::Errors::Http501Error
/var/www/discourse/lib/s3_helper.rb:280:in `rescue in download_file'
/var/www/discourse/lib/s3_helper.rb:277:in `download_file'
/var/www/discourse/lib/file_store/s3_store.rb:338:in `download_file'
/var/www/discourse/lib/backup_restore/backuper.rb:321:in `block in add_remote_uploads_to_archive'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:71:in `each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:71:in `block in find_each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:138:in `block in find_in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/internal:kernel:187:in `loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:137:in `find_in_batches'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/relation/batches.rb:70:in `find_each'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activerecord-7.0.8.4/lib/active_record/querying.rb:22:in `find_each'
/var/www/discourse/lib/backup_restore/backuper.rb:315:in `add_remote_uploads_to_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:248:in `create_archive'
/var/www/discourse/lib/backup_restore/backuper.rb:40:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:9:in `backup'
/var/www/discourse/script/spawn_backup_restore.rb:31:in `block in <main>'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `fork'
/var/www/discourse/script/spawn_backup_restore.rb:4:in `<main>'

我的配置如下:

谢谢。

这是符合预期的,而且 S3/R2 的主要作用就是你不需要备份这些东西。但有一个隐藏设置可以将所有图片从 S3 下载并放入备份中。

哦,但你确实有 DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true

所以也许 R2 的工作方式并非最初建议的那样。我以为我测试过并且奏效了,但我没有尝试将图片下载到备份中,而且我可能也没有尝试进行恢复或下载备份文件。

这可能应该放在那个其他主题中,因为它似乎与那里提出的“也许它有效”的假设相矛盾。

此设置已激活,但不幸的是,在备份时它不会从 R2 导入图片。您可以在手动备份的日志中看到这一点。

我犹豫不决,正在考虑放弃 CDN 并使用本地存储。事实上,如果意见发生变化,这应该会发生。

感谢您花时间回复。

我将再次提出这个问题,但每次自动备份都会充满错误代码。如果不进行备份,我认为最好不要请求 S3 上的文件,以免浪费时间。这样我们就不会在文件中填充不必要的错误代码。

我的猜测是,它不会让你下载它们,因为它试图保护你免受他人窃取你所有图像的侵害。听起来是 R2 与 discourse 不兼容的另一种方式。

1 个赞

我在 R2 上已经很久了。一切看起来都很好,只是有一些小问题(如上所述),但都可以修复。随着时间的推移,社区将致力于解决这个问题,在此之前,祝你好运 :slight_smile:

这很有趣!我只见过你抱怨东西没用。我的快速测试看起来像是奏效了,但我没有进行广泛测试。

我最好的猜测是某种速率限制导致了下载备份,不过我以为会有错误?

1 个赞

在您的测试之后,我们运行了 R2,我遇到的 R2 问题如下:
当我关闭 S3 时,连接变成了奇怪的 R2 连接(我在 Docker 中看到的那种)。当我尝试修复并重新烘烤时,网站上的图片会飞走并失真。在几次尝试后进行纠正后,我只将 R2 设置为上传和使用。所以,我还没有找到摆脱它的方法(或者说我没能找到)。
另一个问题是备份时会产生错误消息。考虑到有 10,000 张图片,这会白白填满错误日志。这有时会导致我们错过重要的问题。(如果不显示错误消息可能会更好,但应该注意的是 S3 中的数据将不会添加到备份中)

我不记得除了这些之外还有其他问题。如果我想备份 R2 上的文件,我可以通过 winscp 连接并将它们下载到我的电脑。如果有人需要,我们在此处留下记录 :slight_smile:

我刚才想到,使用 S3 的用户可以关闭此设置“上传时备份”,这样我们就可以摆脱错误消息。我怎么之前没想到呢…… :rofl::rofl:

1 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.