使用 rclone 将备份同步到 Dropbox 或 Google Drive

有一个插件允许您将 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

16 个赞

对于那些经常(例如每天)通过 cron 作业在 Google Drive 上同步备份但没有太多可用空间的用户,我建议在 rclone 命令中添加 --drive-use-trash=false 标志。

示例:

rclone sync /var/discourse/shared/standalone/backups/default --drive-use-trash=false --exclude tmp/ discourse:

使用此标志,rclone 将从 Google Drive 中删除过时的备份,而不是将其发送到回收站(在那里它们会停留 30 天后被自动删除)。这可以节省大量 Drive 存储空间。

4 个赞