Bathinda
(Bathinda Helper)
2024 年8 月 17 日 07:17
1
此主题后来演变成“恢复失败”,从第 4 帖开始,这是现在的主要问题。您可以忽略前 4 帖。
我几年前/一开始就将我的上传设置为了 AWS S3。
即使我(据我所知)从未启用将 S3 上传包含在我的备份中的选项,但昨天,当我选择在备份中包含“上传”时,我在日志中看到了这个:
这引起了一些奇怪的差异,让我感到困惑:
昨天晚上,我在管理员设置中切换了将“上传”包含在备份中的选项。然后当我通过 WinScp 查看本地“共享上传”文件夹时,它只有不到 100 个文件,只在 1 个文件夹中(没有其他 2x、3x 文件夹,如果需要可以分享截图)。那么为什么备份日志显示下载了大约 3K 个文件。(“下载失败”是这些日志中的另一个令人头疼的问题,但那是“其他”问题)。现在,如果它正在从本地存储下载这些文件,那么这些文件到底存在于何处?如果它正在从 S3 下载,那么 a) 为什么它会从那里下载,因为我从未在 rails 控制台中更改过将 S3 数据包含在备份中的选项,也没有在我的 yml 文件的 Env 部分创建任何类似选项。
然后今天我将 Rails 控制台中的该选项更改为“True”。现在,当我运行备份作业时,它显示下载了相同的约 3.2k 个文件,约有 100 个“下载失败”。但当我检查我的 AWS S3 存储桶时,它有近 10 倍,32k 个文件,约 3GB。那么为什么它没有下载所有这些文件?
是否有办法对所有这些数据进行核对/同步,并可能了解正在发生哪些差异以及在哪里发生的?
现在我非常困惑,我该怎么办。我的最终目标是将我(过于昂贵)的 AWS 存储转移到更便宜的版本(Hetzner 本身,我的 VPS 运行在那里,非常非常便宜,所以我也可以增加我的主服务器的存储空间)。
谢谢。请给我一些指导。
Bathinda
(Bathinda Helper)
2024 年8 月 17 日 08:50
2
即使我的“Uploads”文件夹(在Aws S3存储桶中)超过3 GB(3.2k个文件),为什么备份只有不到1 GB(只下载了2.9k个文件到备份中),即使通过rails控制台启用了“include_s3_uploads_in_backup”选项?
pfaffman
(Jay Pfaffman)
2024 年8 月 17 日 10:26
3
该设置会将文件下载到临时目录并将其包含在备份中。它不会将它们放入上传目录。要将它们放入上传目录,您需要恢复备份。我建议在新服务器上进行操作,这样如果出现任何问题,您的原始服务器仍然完好无损。
听起来有些文件可能丢失了。您是否有帖子缺少图片?另一种可能性是上传表包含不再被帖子引用的上传,因此那些丢失的图片无关紧要。
如果只有大约 100 个,那可能不是什么大问题。
或者,可能是某个时候的错误清理(删除了)本应保留的文件。
要查看它下载的文件,您需要下载备份文件并查看其中包含的内容。将备份恢复到新服务器以查看其工作原理。
1 个赞
Bathinda
(Bathinda Helper)
2024 年8 月 17 日 11:24
4
但主要问题是,为什么备份只有不到 1 GB(只有 3100 个文件),即使 S3 的“Uploads”文件夹也只有 3.2 GB 和 32K 个文件。(备份日志清楚地显示它只下载了大约 10%,3k 个文件)。
[对我来说,创建一个新的 discourse 设置并使用不同的域来测试这件事非常麻烦,尽管我觉得创建一个快照然后,如果需要,可以在 5 分钟内恢复我那个不怎么繁忙的网站,没有任何麻烦,这非常容易。]
Bathinda
(Bathinda Helper)
2024 年8 月 18 日 14:58
5
嗯,我以为即使更改了 Rails C 中的选项,为什么不在 yml 中也添加这一行 DISCOURSE_INCLUDE_S3_UPLOADS_IN_BACKUPS: true,想着这或许会调用我所有的 Aws S3 上传文件。
但是,在更改了 yml 中的这个选项,重建容器,运行备份后,我在备份日志中发现了同样的条目(3000 次媒体下载,约 100 次失败)。
当我尝试恢复时(我还没有更改管理设置中的任何上传/S3 设置),它报错了。
完整日志:

pfaffman
(Jay Pfaffman)
2024 年8 月 18 日 16:02
6
Bathinda Helper:
(我还没有更改过管理员设置中的任何上传/S3设置
所以它会尝试将图像上传到您的 S3 存储桶。
如果您打开 tar 文件,您会发现它包含了您所有的图像,除了您收到错误消息的那一百张。
1 个赞
Bathinda
(Bathinda Helper)
2024 年8 月 19 日 04:15
7
所以,我禁用了 S3 上传,然后尝试恢复我的 1 GB 备份(备份仍在 AWS S3 上),但它又失败了。这可能是哪里出了问题?
此外,在恢复失败后,我被登出了,再次登录时,我看到一个横幅,上面写着所有非员工电子邮件都已禁用。当我尝试访问电子邮件收到的链接中的日志时,找不到该文件/无法访问(显示了我设置的错误页面)。
当它尝试恢复时,就在我被登出之前,我看到了这些日志消息:
[2024-08-19 04:12:58] 'Bathinda_Helper' has started the restore!
[2024-08-19 04:12:58] Marking restore as running...
[2024-08-19 04:12:58] Making sure /var/www/discourse/tmp/restores/default/2024-08-19-041258 exists...
[2024-08-19 04:12:59] Downloading archive to tmp directory...
Bathinda
(Bathinda Helper)
2024 年8 月 19 日 04:23
8
在后续的“FAILED-restore”尝试中,我能够在退出登录前点击日志链接。这是日志:
log- failed restore.txt (98.9 KB)
我已经做了一些实验,新的上传确实正在我的本地 Ubuntu 服务器上创建。但是从 S3 恢复到本地失败了。但问题是,我检查过的一些帖子仍然继续显示来自 S3 的图片(那些没有丢失)。
请指导。
Bathinda
(Bathinda Helper)
2024 年9 月 1 日 13:30
9
请帮忙。恢复又失败了。
另外,在“恢复失败”之后,即使我使用相同的管理员登录,也无法访问“Log.txt”附件。它显示页面不可用/我的设置错误页面。
pfaffman
(Jay Pfaffman)
2024 年9 月 1 日 15:14
10
您可以尝试在命令行中恢复,并使用 tmux 或 screen,以便您可以滚动查看日志。
1 个赞
Bathinda
(Bathinda Helper)
2024 年9 月 2 日 04:13
11
从您这篇帖子 中,我按照您的指示,通过 Tmux 尝试了以下操作,但失败了,出现如下错误:
另外,因为我有 ‘data’ 和 ‘Web_only’ 两个容器,我应该恢复到哪个容器上?
pfaffman
(Jay Pfaffman)
2024 年9 月 2 日 10:38
12
您正在从 web_only 容器进行恢复,就像您之前做的那样。
您已经在第一个命令中成功启用了恢复(不知道您为什么会尝试用其他方式再次执行),现在执行
discourse restore
1 个赞
Bathinda
(Bathinda Helper)
2024 年9 月 2 日 10:40
13
Jay Pfaffman:
不知道你为什么想用另一种方式再试一次
我实际上尝试过和你上面提到的帖子里的截图做完全一样的事情。无论如何,我现在只会执行“Discourse restore”。
据我所理解/我希望,我不需要提供备份(.tz)文件所在的任何路径,它会自动从我的本地服务器备份文件夹中选取。
1 个赞