# 恢复到新主机

**URL:** https://meta.discourse.org/t/restore-to-new-host/219515
**Category:** Support
**Created:** [2022年二月27日 19:46 UTC](https://meta.discourse.org/t/restore-to-new-host/219515 "2022-02-27T19:46:43Z")
**Posts on this page:** 14
**Page:** 1

<div class="post-metadata">

### Author: ![Samir\_Faci](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/samir_faci/32/119582_2.png) [@Samir\_Faci](https://meta.discourse.org/u/Samir_Faci)
#### Post date: [2022年二月27日 19:46 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/1 "2022-02-27T19:46:43Z")

</div>

我设置了一个新主机，以便拥有一个“暂存”环境。我重新创建了相同的 discourse 安装，版本应该是一样的。我正在运行的版本是：2.8.2。

第一个评论，截至 2.8.2 版本，我的备份大小从 282MB 下降到大约 90MB。不确定原因，但我将利用一些智能信息。

我从我的论坛下载了最新的存档，并将其上传到新暂存环境的本地存储。

恢复因以下原因失败：

```sh
[2022-02-27 19:41:18] ALTER TABLE
[2022-02-27 19:41:18] ALTER TABLE
[2022-02-27 19:41:18] 正在迁移数据库...
[2022-02-27 19:43:00]
[2022-02-27 19:43:00] 正在重新连接到数据库...
[2022-02-27 19:43:00] 正在重新加载站点设置...
[2022-02-27 19:43:00] 正在为非员工用户禁用传出电子邮件...
[2022-02-27 19:43:02] 正在禁用只读模式...
[2022-02-27 19:43:02] 正在清除类别缓存...
[2022-02-27 19:43:02] 正在重新加载翻译...
[2022-02-27 19:43:02] 正在重新映射上传...
[2022-02-27 19:43:02] 将 'https://forum.geekbeacon.org' 重新映射到 'https://forum-staging.geekbeacon.org'
[2022-02-27 19:43:08] 正在恢复上传，这可能需要一些时间...
[2022-02-27 19:43:36] EXCEPTION: 8 个帖子未重新映射到新的 S3 上传 URL。数据库 'default' 的 S3 迁移失败。
[2022-02-27 19:43:36] /var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:87:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:373:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:66:in `migrate'
/var/www/discourse/lib/file_store/s3_store.rb:317:in `copy_from'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:62:in `restore_uploads'
/var/www/discourse/lib/backup_restore/uploads_restorer.rb:44:in `restore'
/var/www/discourse/lib/backup_restore/restorer.rb:61:in `run'
/var/www/discourse/script/spawn_backup_restore.rb:23:in `restore'
/var/www/discourse/script/spawn_backup_restore.rb:36: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>'
[2022-02-27 19:43:36] 正在尝试回滚...
[2022-02-27 19:43:36] 正在回滚...
[2022-02-27 19:43:36] 正在清理...
[2022-02-27 19:43:36] 正在从 discourse_functions 模式中删除函数...
[2022-02-27 19:43:36] 正在删除临时文件 '/var/www/discourse/tmp/restores/default/2022-02-27-194051' 目录...
[2022-02-27 19:43:36] 正在取消暂停 sidekiq...
[2022-02-27 19:43:36] 正在将恢复标记为完成...
[2022-02-27 19:43:36] 正在通知 'csgeek' 恢复结束...

```

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2022年二月28日 01:43 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/2 "2022-02-28T01:43:40Z")

</div>

> [@Samir\_Faci](#):
>
> `EXCEPTION: 8 posts are not remapped to new S3 upload URL. S3 migration failed`

这是您的问题。也许可以使用相同的 S3 存储桶并使用相同的存储桶？也许要确保名为“下载 S3 进行备份”之类的隐藏设置已打开。您需要搜索或查看源以获取该设置的名称。

或者，您可能需要查看生产站点上的其余上传是否在 S3 上。

---

<div class="post-metadata">

### Author: ![Samir\_Faci](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/samir_faci/32/119582_2.png) [@Samir\_Faci](https://meta.discourse.org/u/Samir_Faci)
#### Post date: [2022年三月2日 17:00 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/3 "2022-03-02T17:00:58Z")

</div>

我没有配置 S3，我猜可能是旧服务器上有一些未映射到有效 S3 位置的旧数据。

我回到了旧服务器，配置了 2 个存储桶，1 个用于备份，1 个用于媒体。我按照指南设置了 AWS S3，包括 CDN。

当我运行 rake uploads:migrate\_to\_s3 失败后，我接着运行了 posts:rebake，这似乎减少了错误数量，但它仍然失败：

```sh
请注意，迁移到 S3 目前是不可逆的！
[CTRL+c] 取消，[ENTER] 继续

正在为 'default' 迁移上传到 S3...
正在将文件上传到 S3...
 - 列出本地文件
 => 208 个文件
 - 列出 S3 文件
. => 978 个文件
 - 同步文件到 S3
................................................................................................................................................................................................................
正在更新数据库中的 URL...
正在删除旧的优化图像...
正在将所有包含灯箱的帖子标记为重新烘焙...
15 个帖子被标记为重新烘焙
rake 中止！
FileStore::ToS3MigrationError: 1 个帖子未重新映射到新的 S3 上传 URL。数据库 'default' 的 S3 迁移失败。
/var/www/discourse/lib/file_store/to_s3_migration.rb:132:in `raise_or_log'
/var/www/discourse/lib/file_store/to_s3_migration.rb:87:in `migration_successful?'
/var/www/discourse/lib/file_store/to_s3_migration.rb:373:in `migrate_to_s3'
/var/www/discourse/lib/file_store/to_s3_migration.rb:66:in `migrate'
/var/www/discourse/lib/tasks/uploads.rake:123:in `migrate_to_s3'
/var/www/discourse/lib/tasks/uploads.rake:102:in `block in migrate_to_s3_all_sites'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.0/lib/rails_multisite/connection_management.rb:80:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/2.7.0/gems/rails_multisite-4.0.0/lib/rails_multisite/connection_management.rb:90:in `each_connection'
/var/www/discourse/lib/tasks/uploads.rake:100:in `migrate_to_s3_all_sites'
/var/www/discourse/lib/tasks/uploads.rake:96:in `block in <main>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
Tasks: TOP => uploads:migrate_to_s3
(运行任务时显示 --trace 以查看完整跟踪)

```

有没有办法以详细模式运行 migrate\_to\_s3 来识别出问题的帖子？

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2026年一月13日 14:06 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/4 "2026-01-13T14:06:14Z")

</div>

我遇到了同样的问题，在不更改 s3 存储桶的情况下迁移了我的服务器。  
有什么建议吗？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2026年一月13日 14:14 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/5 "2026-01-13T14:14:14Z")

</div>

您的还原出现类似以下的错误？

```plaintext
FileStore::ToS3MigrationError: 1 个帖子未重新映射到新的 S3 上传 URL。数据库 'default' 的 S3 迁移失败。

```

在这种情况下，_最好_是修复上传位置不正确的帖子。但我认为有一种情况该测试可能会出现误报。在这种情况下，您可以使用 rake 任务上的一个开关来暂停它，以便您可以修复问题。我不能马上找到它，它也不在应该在的 [https://meta.discourse.org/t/backup-discourse-from-the-command-line/64364。我现在正在处理一项任务，所以现在找不到它。](https://meta.discourse.org/t/backup-discourse-from-the-command-line/64364%E3%80%82%E6%88%91%E7%8E%B0%E5%9C%A8%E6%AD%A3%E5%9C%A8%E5%A4%84%E7%90%86%E4%B8%80%E9%A1%B9%E4%BB%BB%E5%8A%A1%EF%BC%8C%E6%89%80%E4%BB%A5%E7%8E%B0%E5%9C%A8%E6%89%BE%E4%B8%8D%E5%88%B0%E5%AE%83%E3%80%82)

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2026年一月13日 14:17 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/6 "2026-01-13T14:17:46Z")

</div>

> [@pfaffman](#):
>
> `FileStore::ToS3MigrationError: 1`

是的，我遇到了这类错误

EXCEPTION: 3 个帖子未重新映射到新的 S3 上传 URL。数据库 ‘default’ 的 S3 迁移失败

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2026年一月13日 14:29 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/7 "2026-01-13T14:29:34Z")

</div>

您可以尝试

```plaintext
discourse restore --pause filename

```

这将暂停恢复过程，您可以在另一个终端中修改数据库以修复它。或者，我想，您可以在它执行该检查之前直接停止它。

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2026年一月13日 14:32 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/8 "2026-01-13T14:32:50Z")

</div>

我想我必须在命令行恢复期间使用它

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2026年一月13日 15:25 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/9 "2026-01-13T15:25:20Z")

</div>

出现相同的错误：  
正在上传文件到 S3…

- 列出本地文件  
=\> 2 个文件
- 列出 S3 文件  
… =\> 183549 个文件
- 将文件同步到 S3  
..  
正在数据库中更新 URL…  
正在删除旧的优化图像…  
正在标记所有包含灯箱的帖子以进行重新烘焙…  
169809 个帖子被标记为重新烘焙  
**异常：3 个帖子未映射到新的 S3 上传 URL。数据库 ‘default’ 的 S3 迁移失败。**  
/var/www/discourse/lib/file\_store/to\_s3\_migration.rb:132:in `raise_or_log' /var/www/discourse/lib/file_store/to_s3_migration.rb:81:in `migration\_successful?’  
/var/www/discourse/lib/file\_store/to\_s3\_migration.rb:385:in `migrate_to_s3' /var/www/discourse/lib/file_store/to_s3_migration.rb:59:in `migrate’  
/var/www/discourse/lib/file\_store/s3\_store.rb:367:in `copy_from' /var/www/discourse/lib/backup_restore/uploads_restorer.rb:69:in `restore\_uploads’  
/var/www/discourse/lib/backup\_restore/uploads\_restorer.rb:49:in `restore' /var/www/discourse/lib/backup_restore/restorer.rb:179:in `restore\_uploads’  
/var/www/discourse/lib/backup\_restore/restorer.rb:72:in `run' script/discourse:243:in `restore’  
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/command.rb:28:in `run' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/invocation.rb:127:in `invoke\_command’  
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor.rb:538:in `dispatch' /var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.4.0/lib/thor/base.rb:584:in `start’  
script/discourse:397:in `\u003ctop (required)\u003e’ /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `load’  
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:59:in `kernel_load' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli/exec.rb:23:in `run’  
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:452:in `exec' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/command.rb:28:in `run’  
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/invocation.rb:127:in `invoke_command' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor.rb:538:in `dispatch’  
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:35:in `dispatch' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/vendor/thor/lib/thor/base.rb:584:in `start’  
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/cli.rb:29:in `start' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/exe/bundle:28:in `block in \u003ctop (required)\u003e’  
/usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/lib/bundler/friendly\_errors.rb:117:in `with_friendly_errors' /usr/local/lib/ruby/gems/3.3.0/gems/bundler-2.6.4/exe/bundle:20:in `\u003ctop (required)\u003e’  
/usr/local/bin/bundle:25:in `load' /usr/local/bin/bundle:25:in `’  
正在尝试回滚…  
正在回滚…  
正在清理…  
正在从 discourse\_functions 模式中删除函数…  
正在删除 tmp ‘/var/www/discourse/tmp/restores/default/2026-01-13-145033’ 目录…  
正在取消暂停 sidekiq…  
正在将恢复标记为完成…  
正在通知 ‘system’ 恢复结束…  
完成！

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2026年一月13日 16:42 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/10 "2026-01-13T16:42:30Z")

</div>

您需要修复那三个上传，或者在执行该检查之前停止还原。

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2026年一月13日 16:52 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/11 "2026-01-13T16:52:12Z")

</div>

我如何能找到  
168000 中的 3 个帖子？  
是否可以在跳过验证的情况下停止恢复？

---

<div class="post-metadata">

### Author: ![pfaffman](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pfaffman/32/120154_2.png) [@pfaffman](https://meta.discourse.org/u/pfaffman)
#### Post date: [2026年一月13日 16:55 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/12 "2026-01-13T16:55:41Z")

</div>

> [@Saiano](#):
>
> 3 次帖子在 168000？

我会查看执行该测试的代码，然后运行相同的查询。我可能之前发布过执行此操作的代码。

> [@Saiano](#):
>
> 是否可以停止恢复，跳过此验证？

我发布了

> [@pfaffman](#):
>
> 你可以试试
> 
> ```plaintext
> discourse restore --pause filename
> 
> ```

你做过吗？我想在恢复完成后你可以直接按 Control-C 停止。你是在只恢复数据库吗？

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2026年一月13日 17:02 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/13 "2026-01-13T17:02:22Z")

</div>

> [@pfaffman](#):
>
> 你做过那个吗？我想你可以在恢复完成后直接按 control-c。你只做数据库恢复吗？

哦，该死，我没想到在数据库恢复之后、上传之前停止恢复。  
我不需要从 S3 迁移上传文件——我能只迁移前端和数据库吗？

你能告诉我哪个选项可以让你停止对帖子执行 rake 操作并识别出有问题的内容吗？那将非常感激。

---

<div class="post-metadata">

### Author: ![Saiano](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/saiano/32/153394_2.png) [@Saiano](https://meta.discourse.org/u/Saiano)
#### Post date: [2026年一月15日 07:12 UTC](https://meta.discourse.org/t/restore-to-new-host/219515/14 "2026-01-15T07:12:03Z")

</div>

有什么建议吗？谢谢
