对于经验丰富的系统管理员而言,移动大文件的常用工具是 rsync 或 scp,但有时您无法通过 SSH 访问需要获取大型备份文件的主机。
由于备份文件包含敏感信息,Discourse 具备安全功能,使得未经授权的人员极难获取备份。您必须通过电子邮件获取下载链接,并以请求该链接的用户身份登录使用该链接。如果您希望通过网页浏览器下载数据,过程非常简单。但如果您想将该备份移动到互联网上的另一台服务器,大多数家庭互联网服务提供商会让这一过程变得非常棘手。在我的家庭互联网连接上,上传一个 2.3 GB 的文件需要超过 20 分钟,而这里的 12 GB 文件则需要大约两个小时。
以下是如何通过 wget 从 Discourse 站点拉取备份的链接方法:
首先,按常规方式启动下载,然后打开 Chrome 的下载页面(chrome://downloads/)。右键点击 URL 并复制它。
然后,在您希望保存文件的机器上的 Shell 中,可以将该 URL 粘贴到 wget 请求中。请务必用引号将其括起来,因为其中的 \u0026(即 &)会导致问题。您还需要确保保留备份文件的原始文件名。您的请求应类似于以下内容:
wget --show-progress "https://bucket-name.s3.us-west-2.amazonaws.com/backups/xyz/multisitename/discourse-2020-11-19-001538-v20201116132948.tar.gz?X-Amz-Algorithm=AWS4-HMAC-SHA256\u0026X-Amz-Credential=AKIAWWK5WHOFJ%2F20201119%2Fus-west-2%2Fs3%2Faws4_request\u0026X-Amz-Date=20201119T013442Z\u0026X-Amz-Expires=300\u0026X-Amz-SignedHeaders=host\u0026X-Amz-Signature=1753b97a8aaf6953c89aa28628b8db" -o discourse-2020-11-19-001538-v20201116132948.tar.gz
您也可以省略 -o filename 参数,在下载完成后重命名文件(此时文件名将是完整的 URL)。由于 URL 具有时效性,因此您需要在准备将文件拉取到服务器时再启动下载。
随后,您可以将文件移动到 /var/discourse/shared/standalone/backups/default 目录,并通过 Web 界面或使用以下命令进行恢复:
cd /var/discourse
./launcher enter app
discourse enable_restore
discourse restore
上述最后一个命令将打印可用备份列表,您可以复制粘贴正确的备份名称以开始恢复。

