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

Google Drive还没有正式的Linux客户端,但您可以直接从命令行使用rclone实用程序备份到Google Drive。我们教你怎么做。

Linux上的Google Drive在哪里?

尽管早在2012年就承诺将“很快”支持Linux,但没有迹象表明Google会为Google Drive提供原生Linux客户端。有几种非官方的第三方解决方案,如InSync、OverGrive和ODrive,一些文件浏览器允许与Google Drive集成,如GNOME中的Files。

第三方应用程序是商业产品,需要直接购买或订阅。它们运行良好,成本不高,事实上,overGrive确实有一个免费版本,免费提供有限的功能。

但是,如果您想要从命令行创建和运行备份,该怎么办呢?或者将该功能合并到脚本中?这一切都要归功于一款名为rclone的神奇应用程序。事实上,使用rclone,您可以备份、下载文件并将其同步到40多个不同的云解决方案,这就像云的rsync一样。

安装rclone

几乎可以肯定的是,默认情况下,您的Linux计算机上不会安装rclone。令人高兴的是,有一个安装脚本应该可以在所有发行版上运行。安装过程使用curl。在用于研究本文的计算机上,Fedora 31和Manjaro 18.1.0已经安装了curl,但必须在Ubuntu 18.04 LTS上安装curl。

在Ubuntu上,运行以下命令进行安装:

sudo apt-get install curl

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

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

rclone安装完成后,您将看到一条成功消息。

这已在您的Linux计算机上安装了rclone程序。下一步是运行安装过程并验证rclone以访问您的Google Drive。

创建rclone远程连接

到远程云服务的连接在rclone世界中称为“远程”。我们需要为Google Drive创建一个。使用以下命令启动rclone配置过程:

rclone config

在配置过程中有很多问题。但是不要灰心丧气,它们中的许多可以保留为默认值,只需按“Enter”键即可接受。

rclone告诉我们没有配置远程。按“n”,然后按“Enter”创建新遥控器。它将提示您输入名称。我们会把它叫做“Google-Drive”你喜欢用什么名字都行。

长菜单允许您选择要创建远程连接的存储类型。

滚动列表,直到看到Google Drive条目,然后记下它的编号。

我们可以看到,在本例中,它是编号13。输入这作为存储类型,然后按“Enter”。

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

然后系统会提示您输入Google Application Client Secret。

再说一遍,只需按“回车”即可。您需要提供rclone在您的Google Drive上运行时将具有的作用域。按“1”,然后按“回车”。

对于“根文件夹ID”,只需按“Enter”即可。

在“Service Account Credentials”(服务帐户凭据)提示下,按“Enter”。

在“Edit Advanced config”(编辑高级配置)提示下,只需按“Enter”(回车)即可。在“USE AUTO CONFIG”(使用自动配置)菜单中,按“y”,然后按“Enter”。

这会使rclone与您的Google Drive进行通信,并启动您的浏览器以允许您授予rclone与Google Drive交互的权限。

在浏览器窗口中,单击要使用的Google帐户。

单击“允许”按钮允许rclone访问您的Google Drive。

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

在“Configure this as a team drive”提示符下,键入“n”,然后按“Enter”。

在“Yes,Edit,Delete”菜单中键入“y”,然后按“Enter”。

在最后一个菜单中,键入“q”,然后按“Enter”。

rclone备份脚本

rclone应用程序功能非常丰富。这很好,但这确实意味着有很多选择。我们将在下面查看的命令将文件从您的本地计算机复制到您的Google Drive。这是到云的单向复制;它不是Google Drive和本地计算机之间的双向同步-尽管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"

以下是参数的含义:

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

这些值中有一些是默认值,但是我们在这里包含了它们,以便我们可以讨论它们。这样,如果您需要更改某个值,您就知道要调整哪个参数。

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

chmod +x gbk.sh

运行备份脚本

我们的备份脚本将把Documents文件夹复制到Google Drive。在我们的Documents文件夹中,我们有一个乐谱集合。

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

./gbk.sh

我们要求每隔一秒更新一次统计信息(--stats 1s),还要求详细输出(--Verbose)。那么我们得到大量的屏幕输出就不足为奇了。通常,打开新功能的详细输出是一个很好的选择,这样您就可以发现问题。一旦你很高兴事情进展顺利,你就可以调低产出量。

我们会得到一个最终摘要,告诉我们60个文件被无误地传输了。转账大约花了24秒。

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

已经创建了一个“LinuxDocs”目录,因此看起来很有希望。如果我们双击它来看一下里面,我们可以看到文件都已经传输到我们的Google Drive上了。

使用rclone查看Google Drive上的文件

我们可以使用rclone从终端窗口查看Google Drive上的文件夹:

rclone ls google-drive:/LinuxDocs

冰山之角

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

rclone有绝对丰富的命令,我们鼓励您查看他们的文档和优秀的网站。我们在这里仅仅触及了皮毛,稍微阅读一下rclone和玩一下rclone就会使我们的努力得到很多倍的回报。

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

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