Rclone 是一个开源的命令行的文件同步程序,它能和一些网盘或对象存储对接,实现文件同步。对于只有命令行的 Linux 服务器来说,使用 Rclone 可以直接通过命令行使用 Google Drive 和 OneDrive。

因为 Google Drive 无法在大陆地区访问,如果要使用 Rclone 挂载 Google Drive 就需要使用香港或国外的服务器。

安装

这里会用到 curl,如果没有 curl 的话,需要先安装 curl。

安装 Rclone:

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

你也可以直接下载脚本执行安装。

配置

输入:

rclone config

初始化配置。

第一次初始化可能会看到如下内容:

2020/03/04 17:17:28 NOTICE: Config file "/root/.config/rclone/rclone.conf" not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config

输入 n 初始化,其中的 name 可以随便填,然后是选择要对接的云存储,如下:

1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, etc)
   \ "s3"
 5 / Backblaze B2
   \ "b2"
 6 / Box
   \ "box"
 7 / Cache a remote
   \ "cache"
 8 / Citrix Sharefile
   \ "sharefile"
 9 / Dropbox
   \ "dropbox"
10 / Encrypt/Decrypt a remote
   \ "crypt"
11 / FTP Connection
   \ "ftp"
12 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
13 / Google Drive
   \ "drive"
14 / Google Photos
   \ "google photos"
15 / Hubic
   \ "hubic"
16 / In memory object storage system.
   \ "memory"
17 / JottaCloud
   \ "jottacloud"
18 / Koofr
   \ "koofr"
19 / Local Disk
   \ "local"
20 / Mail.ru Cloud
   \ "mailru"
21 / Mega
   \ "mega"
22 / Microsoft Azure Blob Storage
   \ "azureblob"
23 / Microsoft OneDrive
   \ "onedrive"
24 / OpenDrive
   \ "opendrive"
25 / Openstack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
26 / Pcloud
   \ "pcloud"
27 / Put.io
   \ "putio"
28 / QingCloud Object Storage
   \ "qingstor"
29 / SSH/SFTP Connection
   \ "sftp"
30 / Sugarsync
   \ "sugarsync"
31 / Transparently chunk/split large files
   \ "chunker"
32 / Union merges the contents of several remotes
   \ "union"
33 / Webdav
   \ "webdav"
34 / Yandex Disk
   \ "yandex"
35 / http Connection
   \ "http"
36 / premiumize.me
   \ "premiumizeme"

可以直接输入前面的序号,我这里要挂载 Google Drive 可以输入 13

lient_id 可以为空,直接回车。

client_secret 也可以为空,按回车继续。

然后是设置访问的范围:

 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"

可以选择第 1 项,直接输入 1

root_folder_id 也可以为空,回车继续。

service_account_file 也可以为空。

Edit advanced config 可以输入 n

Use auto config (自动配置)可以输入 n

这里会显示一个 URL,复制 URL 在已登录 Google 账号的浏览器中访问授权,如下:

Please go to the following link: https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=202264815644.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A2Fwww.googleapis.com%2Fauth%2Fdrive&state=u0ZFmyfDgjqoPBmHLCwDXw
Log in and authorize rclone for access

授权后网页上会出现一个验证码,复制验证码到 Enter verification code 区域粘贴。

Configure this as a team drive 可以输入 n

最后输入 q 退出:

urrent remotes:

Name                 Type
====                 ====
google               drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q

挂载

创建一个用来挂载的目录:

mkdir /google

我在根目录下创建了一个 google 目录用来挂载。

挂载的命令是:

rclone mount name: /google --allow-other --allow-non-empty --vfs-cache-mode writes

其中的 name 就是配置名称,/google 就是用来挂载的本地目录。例如我的配置名称是 google,我要挂载到根目录下的 google 目录,我可以使用:

rclone mount google: /google --allow-other --allow-non-empty --vfs-cache-mode writes

如果在挂载的时候出现了类似下面的提示:

2020/03/04 18:58:16 Fatal error: failed to mount FUSE fs: fusermount: exec: "fusermount": executable file not found in $PATH

需要安装 fuse。

CentOS/Fedora 安装 fuse:

yum install -y fuse 

Ubuntu/Debian 安装 fuse:

apt install -y fuse

如果挂载的时候没有任何显示也无法操作,可以再开一个远程窗口,输入:

df -h

查看磁盘统计信息,如果出现了挂载目录的磁盘信息说明挂载成功,如下:

文件系统        容量  已用  可用 已用% 挂载点
devtmpfs        1.3G     0  1.3G    0% /dev
tmpfs           1.3G  328K  1.3G    1% /dev/shm
tmpfs           1.3G  126M  1.1G   11% /run
tmpfs           1.3G     0  1.3G    0% /sys/fs/cgroup
/dev/vda1        37G  4.7G   31G   14% /
tmpfs           250M     0  250M    0% /run/user/0
google:          15G   12G  3.9G   75% /google

我这里的 Google Drive 就挂载在根目录下的 google 目录。

挂载后可以像操作本地目录一样操作 Google Drive,上传和下载文件可以直接拷贝。