在 Linux 系统上使用 rclone 管理 Google 云端硬盘
尽管 Google 云端硬盘并没有官方的 Linux 客户端,但您可以利用 rclone 工具,通过命令行直接备份数据到您的 Google 云端硬盘。本文将详细介绍如何操作。
Linux 上的 Google 云端硬盘解决方案
自从 2012 年承诺推出 Linux 支持以来,Google 尚未开发出原生的 Linux 客户端。市面上存在一些第三方解决方案,例如 Insync、overGrive 和 ODrive。部分文件管理器,如 文件 在 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 是一种将数据存储在地理上远离您的家庭或办公室位置的简单方法。这绝对是一件好事。