如何在 Linux 上使用 rclone 备份到 Google Drive

在 Linux 系统上使用 rclone 管理 Google 云端硬盘

尽管 Google 云端硬盘并没有官方的 Linux 客户端,但您可以利用 rclone 工具,通过命令行直接备份数据到您的 Google 云端硬盘。本文将详细介绍如何操作。

Linux 上的 Google 云端硬盘解决方案

自从 2012 年承诺推出 Linux 支持以来,Google 尚未开发出原生的 Linux 客户端。市面上存在一些第三方解决方案,例如 InsyncoverGriveODrive。部分文件管理器,如 文件GNOME 环境中,也允许与 Google 云端硬盘集成。

然而,这些第三方应用通常是商业产品,需要付费购买或订阅。 虽然它们运行良好,费用也不算太高,但 overGrive 确实提供了功能有限的免费版本。

如果您希望通过命令行执行备份操作,或者将此功能集成到脚本中,该怎么办? rclone 这款出色的应用可以满足您的需求。 rclone 不仅支持 Google 云端硬盘,还可以将文件备份、下载和同步到 40 多种不同的云服务,堪称云端的 rsync

rclone 的安装

rclone 默认情况下可能未安装在您的 Linux 系统上。幸运的是,有一个安装脚本适用于大多数发行版。安装过程中需要使用 curl。在本文使用的 Fedora 31 和 Manjaro 18.1.0 系统中,curl 已经预装,但在 Ubuntu 18.04 LTS 上需要单独安装。

在 Ubuntu 系统上,运行以下命令安装 curl:

sudo apt-get install curl

安装 curl 后,使用以下命令安装 rclone:

curl https://rclone.org/install.sh | sudo bash

rclone 安装完成后,您将看到安装成功的提示信息。

现在,您的 Linux 系统上已经安装了 rclone。下一步是运行设置过程,以便 rclone 能够访问您的 Google 云端硬盘。

创建 rclone 远程连接

rclone 中,与远程云服务的连接称为“远程”。我们需要为 Google 云端硬盘创建一个远程连接。使用以下命令启动 rclone 配置过程:

rclone config

配置过程会提出许多问题,但请不要担心,其中许多问题可以使用默认值,直接按“Enter”键即可接受。

rclone 会提示您没有配置远程连接。按“n”并按“Enter”键创建一个新的远程连接。系统会提示您输入名称,我们将其命名为“google-drive”,您也可以使用任何您喜欢的名称。

接下来,会显示一个很长的菜单,供您选择要创建远程连接的存储类型。

滚动列表,找到 Google Drive 的条目,并记下其对应的编号。

在本示例中,Google Drive 的编号是 13,输入 13 作为存储类型,然后按“Enter”键。

系统会提示您输入 Google 应用客户端 ID。直接按“Enter”键接受默认值。

接下来,系统会提示您输入 Google 应用客户端密码。

同样,直接按“Enter”键即可。接下来,您需要指定 rclone 在访问您的 Google 云端硬盘时拥有的权限范围,输入“1”,然后按“Enter”键。

在 “根文件夹 ID” 提示下,直接按 “Enter” 键。

在 “服务帐户凭据” 提示下,直接按 “Enter” 键。

在 “编辑高级配置” 提示下,直接按 “Enter” 键。在“使用自动配置”菜单中,输入“y”,然后按“Enter”键。

这会使得 rclone 与您的 Google 云端硬盘通信,并打开您的浏览器,允许您授权 rclone 与您的 Google 云端硬盘进行交互。

在浏览器窗口中,点击您想使用的 Google 账号。

点击“允许”按钮,授权 rclone 访问您的 Google 云端硬盘。

身份验证完成后,您会在浏览器窗口中看到“成功!”消息。您可以关闭浏览器,返回终端窗口。

在 “配置为团队云端硬盘” 提示符处,输入 “n”,然后按 “Enter” 键。

在 “是,编辑,删除” 菜单中,输入 “y”,然后按 “Enter” 键。

在最终菜单中,输入 “q” 并按 “Enter” 键。

rclone 备份脚本

rclone 功能非常强大,这意味着它有 许多选项。以下命令会将文件从您的本地计算机复制到您的 Google 云端硬盘。这是一种单向复制,并非您的 Google 云端硬盘和本地计算机之间的双向同步(尽管 rclone 也能做到这一点)。我们将其用作异地备份的基本形式。

将以下代码输入(或复制并粘贴)到文本编辑器中,并保存到您的计算机。我们将其命名为 gbk.sh。您可以将其命名为任何您觉得合适的名称。

#!/bin/bash
  
/usr/bin/rclone copy --update --verbose --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 --stats 1s "/home/dave/Documents" "google-drive:LinuxDocs"

以下是对参数的说明:

copy:将文件从本地计算机复制到远程存储,跳过远程存储上已存在的文件。
–update:跳过远程存储上修改时间比本地计算机上的文件更新的任何文件。
–verbose:提供有关每个传输文件的信息。
–transfers 30:设置要并行复制的文件数量。
–checkers 8:并行运行的“检查器”数量。检查器监控正在进行的传输。
–contimeout 60s:连接超时。它设置 rclone 尝试连接到远程存储的时间。
–timeout 300s:如果传输在此时间内处于空闲状态,则认为它已损坏并断开连接。
–retries 3:如果出现这么多错误,整个复制操作将重新开始。
–low-level-retries 10:底层重试尝试重复失败的操作,例如单个 HTTP 请求。此值设置重试次数的限制。
–stats 1s:rclone 可以提供传输文件的统计信息。这会将统计信息的更新频率设置为一秒。
“/home/dave/Documents”:我们要复制到远程存储的本地目录。
“google-drive:LinuxDocs”:远程存储中的目标目录。请注意“google-drive”的使用,这是我们在 rclone 配置序列期间为此远程连接指定的名称。还请注意冒号“:”,它用作远程存储名称和目录名称之间的分隔符。子目录使用通常的“/”正斜杠分隔。如果目标目录不存在,则会创建它。

其中一些值是默认值,但我们将其包含在此处以便进行讨论。这样,如果您需要更改一个值,您就知道要调整哪个参数。

使用以下命令使脚本可执行:

chmod +x gbk.sh

运行备份脚本

我们的备份脚本会将 Documents 文件夹复制到 Google 云端硬盘。在 Documents 文件夹中,我们收集了一些乐谱。

我们可以使用以下命令启动备份脚本:

./gbk.sh

我们要求每秒更新一次统计信息(-stats 1s),并要求提供详细输出(-verbose)。 因此,我们得到大量的屏幕输出不足为奇。为新功能打开详细输出通常是一个不错的选择,这样您就可以发现问题。一旦您对事情顺利进行感到满意,就可以减少输出量。

我们得到一个最终摘要,告诉我们已传输 60 个文件且没有错误。传输大约需要 24 秒。

让我们检查一下 Google 云端硬盘,看看云存储中发生了什么。

已创建了一个名为 “LinuxDocs” 的目录,看起来很有希望。如果我们双击它查看内部,可以看到所有文件都已传输到 Google 云端硬盘。

使用 rclone 查看 Google 云端硬盘上的文件

我们可以使用 rclone 直接从终端窗口查看 Google 云端硬盘上的文件夹:

rclone ls google-drive:/LinuxDocs

冰山一角

太棒了,我们可以直接从命令行执行这种类型的复制。我们可以将云存储的使用合并到脚本中,并且可以使用 cron 安排备份脚本的执行。

rclone 拥有非常丰富的命令,我们鼓励您 查看其文档和优秀的网站。我们在这里只触及了表面,阅读和使用 rclone 会带来巨大的回报。

严格来说,这不是真正的备份。它是您的文件和数据的异地远程副本,拥有它绝对是一件好事,但它只是文件的副本。它不提供真正的备份解决方案所能提供的版本控制或其他功能。

因此,请将 rclone 与其他备份技术结合使用。作为现有备份机制的另一层,rclone 是一种将数据存储在地理上远离您的家庭或办公室位置的简单方法。这绝对是一件好事。