有一个插件允许您将 Discourse 备份同步到各种云存储提供商。不幸的是,它目前无法与 Dropbox 和 Google Drive 配合使用。如果您仍希望将备份存储在 Dropbox 或 Google Drive 上,请按照以下步骤操作。我将以 Dropbox 为例,但这些说明也适用于任何由 rclone 支持的后端。
免责声明:这些说明已在 Ubuntu 16.04 上测试过,对我有效,但我并非这方面的专家,因此可能存在更好的方法。欢迎指正,我很乐意更新此帖子。
安装 rclone
sudo curl https://rclone.org/install.sh | sudo bash
如果上述命令失败,系统可能会提示您安装解压缩工具:
sudo apt-get install unzip
授予 Dropbox 访问权限
这是最棘手的一步,因为您需要使用浏览器授予 rclone 访问 Dropbox 的权限,而在通过 SSH 连接到 VPS 时,这至少可以说是不容易的。因此,您需要分两步进行:
在您的服务器上执行
sudo rclone config
并按照说明操作。在某个时刻,系统会提示您
Use auto config?
您回答 N
现在,您需要在桌面计算机上获取身份验证令牌。这意味着您需要在桌面计算机上安装 rclone(Windows 版 rclone 下载地址:https://rclone.org/downloads/),并按照 Remote Setup 中的说明操作。
获取令牌并将其粘贴到等待输入的 SSH 提示符后,您可以通过列出 Dropbox 中的所有目录来验证一切是否按预期工作:
rclone lsd drobo:
其中 drobo 是您之前为 Dropbox 分配的名称。
将备份复制到 Dropbox
找到您的备份文件。通常,它们位于 /var/discourse/shared/standalone/backups/default。如果您使用的是双容器设置,它们可能位于 /var/discourse/shared/web-only/backups/default。
将备份复制到 Dropbox 中备份目录的命令为
sudo rclone copy /var/discourse/shared/standalone/backups/default --exclude tmp/ drobo:backups
设置定时任务以将备份复制到 Dropbox
若要每天下午 6 点复制备份,请将以下内容添加到您的 crontab 中:
crontab -e
然后添加
0 18 * * * rclone copy /var/discourse/shared/standalone/backups/default --exclude tmp/ drobo:backups
如果您希望更频繁地运行,也可以调整频率,因为无论如何只有新文件会被复制。
请注意,copy 选项会将越来越多的备份添加到您的 Dropbox 中,即使服务器上的备份已被删除。如果您只想保留服务器上同时存在的备份,请使用 sync 代替 copy。