这篇帖子是我过去 24 小时的精简版,尽管它实际上还没有成功,所以我希望有人能在下面发帖说明哪里出了问题。
我的 Discourse 更新因重复键而失败,我的一个标签重复了。为了解决更新问题,我需要进行一次全新的 Discourse 安装,然后加载我最新的备份,但加载失败,因为它抱怨重复键。所以,我需要进入备份内部编辑有问题的标签,将其更改为其他内容。
出于某种原因,重新压缩的备份(已修复重复标签问题)比原始备份小得多,并且在我尝试恢复时失败,因此重新压缩过程出了点问题。
1) 查找备份: 要查找您的 Discourse 备份,您可以使用以下命令:
sudo find / -name "*.tar.gz"
这将搜索您的系统上所有扩展名为“.tar.gz”的备份文件。默认情况下,它应该在您的容器内:shared/backups/default
2) 创建副本: 找到要使用的备份后,请创建该文件的副本,以确保您拥有原始文件的备份。使用“cp”命令:
bash
sudo cp /path/to/original_backup.tar.gz /path/to/copy_backup.tar.gz
3) 提取副本: 使用“tar”命令提取复制的备份文件的内容:
bash
tar -xzvf /path/to/copy_backup.tar.gz
这将把备份文件提取到一个临时目录。
4) 编辑数据库中的标签: 导航到提取的备份文件,并使用文本编辑器打开相关的数据库文件。我遇到了重复的“socialmedia”标签问题,这阻止了成功恢复。在一个大的数据库中,有很多标签的实例,很可能也有您要查找的特定标签,所以我使用 Nano 中的 Ctrl W 搜索了“immutable socialmedia”,这直接带我到了那里。
sudo nano /path/to/extracted_database.sql
我将一个“socialmedia”标签实例编辑为“socialmedia2”,然后快速搜索以检查它现在是否只出现一次。一旦恢复成功,我就可以从管理部分修复这些标签。
5) 重新压缩: 编辑备份文件后,创建一个包含已更正内容的新备份文件。使用以下命令压缩修改后的文件:
tar -czvf /path/to/new_modified_backup.tar.gz /path/to/modified_files_directory
6) 移动到正确的文件: 将新的修改后的备份文件移动到存储备份的适当目录。默认位置通常是“/shared/backups/default”:
sudo mv /path/to/new_modified_backup.tar.gz /shared/backups/default/
7) 停止和启动服务: 在恢复修改后的备份之前,请确保停止相关服务,以避免在恢复过程中可能发生的冲突。使用“./launcher stop app”命令停止 Discourse 应用程序:
./launcher stop app
8) 恢复备份: 要从修改后的备份恢复,请使用指向新备份文件的“discourse restore”命令:
discourse restore /shared/backups/default/new_modified_backup.tar.gz
或者您可以通过您的网站上的 /admin 进行操作,因为它现在应该出现在备份部分。
9) 验证恢复: 恢复过程完成后,我通过检查 Discourse 应用程序和数据库来验证更改是否成功,以确保已删除重复的“socialmedia”标签。
10) 启动服务: 我重新启动了之前停止的服务,以使 Discourse 应用程序重新联机。我使用“./launcher start app”命令启动 Discourse 应用程序:
./launcher start app
11) 删除临时文件和额外备份: 成功恢复备份后,我删除了在此过程中创建的任何临时文件和额外备份,以释放磁盘空间。使用“rm”命令删除文件:
sudo rm -r /path/to/temporary_directory
sudo rm /path/to/copy_backup.tar.gz
