Don
1
你好,
目前我对这个情况有些困惑。我们有一个用于上传的 BackBlaze B2 存储桶(包含图片和资源),并与 BunnyCDN 配合使用。由于 B2 Cloud Storage 不支持“墓碑”(tombstone)功能,因此存在大量未使用的图片和脚本。现在,我想将这些上传内容迁移到 Digital Ocean Spaces,同时保持相同的 BunnyCDN 设置,只需将源 URL 更改为 DO 即可。
我们曾使用这篇出色的指南来设置 B2 Cloud Storage,现在希望改用 Digital Ocean 的版本。
进行迁移的最佳实践是什么?我们的上传数据约为 10GB。B2 提供了快照功能,但速度非常慢。控制台命令 rake uploads:migrate_from_s3 会先从 S3 下载所有内容,然后我们需要重新生成帖子,由于涉及大量图片,这个过程也非常缓慢。完成此过程后,再将所有内容上传到 DO Spaces。是这样吗?
如果我们在 B2 Cloud Storage 上创建快照,然后手动下载所有内容到本地电脑,再全部上传到 DO Spaces,会发生什么?完成此过程后,我们将 BunnyCDN 拉取区域的源 URL 修改为 DO Spaces,并更改 app.yml 文件后重新构建。这样是否还需要重新生成帖子?
还有一个问题:DO Spaces 中未使用的文件和图片会怎样?系统能否识别这些文件并自动删除它们?
感谢您的任何帮助 
pfaffman
(Jay Pfaffman)
2
我认为最简单的方法是启用隐藏设置,在控制台中将所有 S3 文件下载到备份(您可以在这里搜索或在源代码中查找),切换到 Spaces,恢复备份,然后重新构建容器。
记得关闭下载图片的设置,否则每次备份时都会重新下载并上传您所有的上传内容!
多年来我一直想解决这个问题,但我的测试总是失败,我想是边缘情况导致的。如果这个方法可行,请告诉我。您可以通过恢复到测试站点来测试它。
Don
3
谢谢!
所以这个备份流程也会备份 S3 上的所有内容吗?这会在将文件下载到电脑后、在 B2 Cloud Storage 上生成一个巨大的备份文件,然后在恢复之前修改 app.yml 文件,将 CDN 指向 DO Spaces?这样会将文件恢复到 DO Spaces。
不过,当我创建备份文件时,app.yml 应该包含 DO Spaces 的信息,以便将数据恢复到正确的位置。或者,我可以在备份创建后直接编辑备份包内的 app.yml 文件吗?
哦对了,我差点忘了备份文件本身也存储在 B2 Cloud Storage 上,只是另一个存储桶而已。
Don
5
我发现了这个,所以我在想,如果直接进行云到云的迁移,只更换 CDN 和 app.yml 文件,是否可行?如果可行,这或许就是该过程最简单、最快的解决方案。他们也支持 BackBlaze。
pfaffman
(Jay Pfaffman)
6
我觉得这应该可行,如果 CDN 相同,那你就不需要改动数据库了。
Don
7
是的,使用相同的 CDN,只需将拉取区域的源 URL 更改为 DO Spaces。
Don
10
Don
11
pfaffman
(Jay Pfaffman)
12
能多说说 Backblaze 的错误情况吗?我一直推荐它(尽管主要是用于备份)。
Don
13
我们之前在日志中收到大量来自 JS 文件的“url forbidden”警告,现在日志已清理干净。有时 Composer 会卡住,出现这类问题,但现在运行流畅且迅速。
他们从未在我们 API 密钥过期时通知我们,这是最大的问题之一。然而,B2 面板上显示“永不过期”,但实际上每隔几个月就会过期,导致我们的网站瘫痪。我认为 B2 存在停机或其他不稳定的情况,因为有时图片上传会失败。
我不确定是否存在推送通知问题,也许这也是原因之一,但目前还不确定,我们正在测试。
对我们来说,迁移到 DigitalOcean Spaces 法兰克福区域是一个正确的选择,因为我们的论坛也部署在那里。到目前为止,速度更快、更稳定。希望未来也能保持良好表现。