小技能GET:使用Rclone挂载GoogleDriver团队盘到Ubuntu

想搞一份大盘机!Rclone是真的牛辟!

运行环境 Runtime environment

1
2
3
操作系统: ubuntu18.04  
IDE: JetBrains Pycharm 2019.2.4 x64
语言: Python 3.7.4

背景

想把申请到的googleDriver团队盘挂载到自己的VPS上去,达到扩容的和文件管理的目的。

全文唯一的难点只有Rclone创建remote,只是步骤多一点,但是并不复杂和难。

像我这种浮躁又怕麻烦的人都能搞定,相信很多人都能搞定。

安装Rclone

使用官方的安装脚本文件

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

输入命令,测试安装是否成功

rclone

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
Usage:
rclone [flags]
rclone [command]

Available Commands:
about Get quota information from the remote.
authorize Remote authorization.
cachestats Print cache stats for a remote
cat Concatenates any files and sends them to stdout.
check Checks the files in the source and destination match.
cleanup Clean up the remote if possible
config Enter an interactive configuration session.
copy Copy files from source to dest, skipping already copied
copyto Copy files from source to dest, skipping already copied
copyurl Copy url content to dest.
cryptcheck Cryptcheck checks the integrity of a crypted remote.
cryptdecode Cryptdecode returns unencrypted file names.
dbhashsum Produces a Dropbox hash file for all the objects in the path.
dedupe Interactively find duplicate files and delete/rename them.
delete Remove the contents of path.
deletefile Remove a single file from remote.
genautocomplete Output completion script for a given shell.
gendocs Output markdown docs for rclone to the directory supplied.
hashsum Produces an hashsum file for all the objects in the path.
help Show help for rclone commands, flags and backends.
link Generate public link to file/folder.
listremotes List all the remotes in the config file.
ls List the objects in the path with size and path.
lsd List all directories/containers/buckets in the path.
lsf List directories and objects in remote:path formatted for parsing
lsjson List directories and objects in the path in JSON format.
lsl List the objects in path with modification time, size and path.
md5sum Produces an md5sum file for all the objects in the path.
mkdir Make the path if it doesn't already exist.
mount Mount the remote as file system on a mountpoint.
move Move files from source to dest.
moveto Move file or directory from source to dest.
ncdu Explore a remote with a text based user interface.
obscure Obscure password for use in the rclone.conf
purge Remove the path and all of its contents.
rc Run a command against a running rclone.
rcat Copies standard input to file on remote.
rcd Run rclone listening to remote control commands only.
rmdir Remove the path if empty.
rmdirs Remove empty directories under the path.
serve Serve a remote over a protocol.
settier Changes storage class/tier of objects in remote.
sha1sum Produces an sha1sum file for all the objects in the path.
size Prints the total size and number of objects in remote:path.
sync Make source and dest identical, modifying destination only.
touch Create new file or change file modification time.
tree List the contents of the remote in a tree like fashion.
version Show the version number.

Use "rclone [command] --help" for more information about a command.
Use "rclone help flags" for to see the global flags.
Use "rclone help backends" for a list of supported services.

出这么一大溜help信息,说明装好了。

配置Rclone

安装完成后,开始添加挂载

输入rclone config来开始设置

首先添加一个新的挂载

rclone config

创建remote

输入 n 回车 ,新建 remote

1
2
3
4
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n

设置remote名称

配置名称,随便填

1
name> googleDriverTeam1

选择remote创建的类型

因为我是对接谷歌团队盘,所以这里选13,

看好是选Google Drive这个选项,

rclone更新以后可能选项的数字会有变化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
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"
Storage> 13 # 选择13,看好是选Google Drive这个选项,rclone更新以后可能选项的数字会有变化
** See help for drive backend at: https://rclone.org/drive/ **

填写 Client Id && Client Secret

可以直接回车,使用RCLONE自己的Client Id来生成remote

但是,这是有弊端的。Rclone官方也说了。

因为Client Id和Client Secret使用率太高了,很多人都在用。

谷歌对每一个client应用都是有限流的,一堆人去挤着用,会发生什么呢?自己想象(一天最大流量是750G)

所以,能够自己注册谷歌client是最好的 googleApi

当然如果觉得麻烦就直接回车,反正以后也是可以修改添加的。

1
2
3
4
5
6
7
8
9
10
Google Application Client Id
Setting your own is recommended.
See https://rclone.org/drive/#making-your-own-client-id for how to create your own.
If you leave this blank, it will use an internal key which is low performance.
Enter a string value. Press Enter for the default ("").
client_id> # 回车
Google Application Client Secret
Setting your own is recommended.
Enter a string value. Press Enter for the default ("").
client_secret> # 回车

选择操作权限

都是自己用的话,直接选1,所有权限

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Scope that rclone should use when requesting access from drive.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
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"
scope> 1 # 选1 回车

根目录设置

用不到这个设置,直接回车

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

ID of the root folder
Leave blank normally.

Fill in to access "Computers" folders (see docs), or for rclone to use
a non root folder as its starting point.

Note that if this is blank, the first time rclone runs it will fill it
in with the ID of the root folder.

Enter a string value. Press Enter for the default ("").
root_folder_id> # 回车
Service Account Credentials JSON file path
Leave blank normally.
Needed only if you want use SA instead of interactive login.
Enter a string value. Press Enter for the default ("").
service_account_file> # 回车

设置选项

1
2
3
4
5
6
7
8
9
10
11
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n # 选n
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes (default)
n) No
y/n> n # 这个auto linux 好像用不了了

谷歌账号授权

就是用自己谷歌授权给开发者创建的client应用,授权让它能够连接和操作你的谷歌网盘。正常操作,放心。

https://accounts.google.com/o/oauth2/auth?XXXXX 这一大串地址复制下来,放到网页浏览器里打开

(首先你要翻墙,然后你要有谷歌账号并且登陆),点击允许授权,会出现一个授权码,点击复制,粘贴过来。

1
2
3
Please go to the following link: https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=322604643123-ru3spb69lmg3nmo1gr1uqf1etb32tbs2.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive&state=tvtLIvwU8axrPSDxWXbIpg
Log in and authorize rclone for access
Enter verification code> # 授权码每个人都不一样,following link 也不一样。

是否是谷歌团队盘

因为使用的是团队盘,当然选y

1
2
3
4
5
6
Log in and authorize rclone for access
Enter verification code> 4/0AGPbXQ9thkw4XynGuNP91QxL4g9Mz7Rubv7M_lajOCwd8GqHuTlOzI
Configure this as a team drive?
y) Yes
n) No (default)
y/n> y

选择要挂载的团队盘

团队盘就是谷歌共享盘下的一个文件夹,一个文件夹算一个团队盘。

因为我有两个团队盘,并且命名了ZIO-X,,

所以,这里能看到两个选项,一个remote只能绑定一个团队盘。

以后多创几个remote里挂载这些团队盘就好。

1
2
3
4
5
6
7
Fetching team drive list...
Choose a number from below, or type in your own value
1 / ZIO-1
\ "xxxx"
2 / ZIO-2
\ "xxxx"
Enter a Team Drive ID> # 每个人都不一样,根据自己需求选择要绑定哪一个团队盘

信息核实

最后核实一下remote的各项参数,确认就敲个y就行

1
2
3
4
5
6
7
8
9
10
11
12
13
--------------------
[ZIO-2]
type = drive
client_id = XXX
client_secret = XXX
scope = drive
token = XXX
team_drive = XXX
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> y

romete列表

会显示当前机器上保存的romete的列表,看看就好,敲q退出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Current remotes:

Name Type
==== ====
ZIO-2 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

到这里,rclone 配置完成。

映射谷歌网盘到文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 找个舒适的位置创建空文件夹,mkdir 命令会用吧?不用教吧?
# 新建本地文件夹,路径自己定,即下面的LocalFolder

例如:
mkdir /home/gdDisk/ZIO-2

# 挂载为磁盘,下面的DriveName、Folder、LocalFolder参数根据说明自行替换
rclone mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding

# 例如:
rclone mount ZIO-2:RXFiles /home/gdDisk/ZIO-2 \
--no-check-certificate \
--no-gzip-encoding \
--copy-links \
--umask 0000 \
--default-permissions \
--allow-non-empty \
--allow-other \
--transfers 1 \
--buffer-size 64M \
--low-level-retries 200 \
--dir-cache-time 12h \
--vfs-read-chunk-size 32M \
--vfs-read-chunk-size-limit 1G


# 对部分参数解释一下
DriveName:就是之前用rclone创建remote的名称
Folder:自己定,也可以不改。凡是rclone上传的文件都会在该谷歌团队盘的下一个名为“Folder”的文件夹里
LocalFolder:本地的绝对路径 比如 /home/gdDisk/ZIO-2

# 如果涉及到读取使用,比如使用H5等在线播放,就在后面多加上以下三条参数
--dir-cache-time 12h
--vfs-read-chunk-size 32M
--vfs-read-chunk-size-limit 1G

# 优化参数
--transfers:该参数是最大同时传输任务数量,如果经常传输大文件,或CPU性能不佳,建议设置为单线程,也就是设置为“1”
--buffer-size:该参数为读取每个文件时的内存缓冲区大小,控制rclone上传和挂载的时候的内存占用
--low-level-retries:该参数为传输文件没速度的时候重试次数,没速度的时候,单个会自动睡眠10ms起,然后再重试
-n = --dry-run - 测试运行,用来查看 rclone 在实际运行中会进行哪些操作。
-P = --progress - 显示实时传输进度,500mS 刷新一次,否则默认 1 分钟刷新一次。
--cache-chunk-size SizeSuffi - 块的大小,默认5M,理论上是越大上传速度越快,同时占用内存也越多。如果设置得太大,可能会导致进程中断。
--cache-chunk-total-size SizeSuffix - 块可以在本地磁盘上占用的总大小,默认10G。
--transfers=N - 并行文件数,默认为4。在比较小的内存的VPS上建议调小这个参数,比如128M的小鸡上使用建议设置为1。
--config string - 指定配置文件路径,string为配置文件路径。
--ignore-errors - 跳过错误。比如 OneDrive 在传了某些特殊文件后会提示Failed to copy: failed to open source object: malwareDetected: Malware detected,这会导致后续的传输任务被终止掉,此时就可以加上这个参数跳过错误。但需要注意 RCLONE 的退出状态码不会为0。

将挂载命令输入终端回车以后,很多人以为是卡住了。

其实不是的,这因为挂载程序跑在前台了。

这时候另开一个终端或者ssh输入命令查询是否映射成功

df -h

1
2
3
4
5
6
7
8
9
10
11
12
13
root@RaXianch:/home# df -h
Filesystem Size Used Avail Use% Mounted on
udev 462M 0 462M 0% /dev
tmpfs 99M 7.6M 91M 8% /run
/dev/vda2 99G 15G 81G 15% /
tmpfs 493M 44K 493M 1% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 493M 0 493M 0% /sys/fs/cgroup
/dev/loop0 92M 92M 0 100% /snap/core/8689
/dev/loop1 94M 94M 0 100% /snap/core/9066
tmpfs 99M 0 99M 0% /run/user/0
ZIO-1:RXFiles 1.0P 0 1.0P 0% /home/gdDisk/ZIO-1
ZIO-2:RXFiles 1.0P 0 1.0P 0% /home/gdDisk/ZIO-2

就能看到自己挂载的硬盘了,而且大小1PB!

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
### 文件上传
rclone copy /home/backup gdrive:backup # 本地路径 配置名字:网盘文件夹路径
### 文件下载
rclone copy gdrive:backup /home/backup # 配置名字:网盘文件夹路径 本地路径
### 新建文件夹
rclone mkdir gdrive:backup # 配置名字:网盘文件夹路径
### 获取文件夹大小
rclone size gdrive:backup # 配置名字:网盘文件夹路径

### 列表
rclone ls gdrive:backup
rclone lsl gdrive:backup # 比上面多一个显示上传时间
rclone lsd gdrive:backup # 只显示文件夹
### 挂载
rclone mount gdrive:mm /root/mm &
### 卸载
fusermount -u /root/mm

#### 其他 ####
rclone config - 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone copy - 将文件从源复制到目的地址,跳过已复制完成的。
rclone sync - 将源数据同步到目的地址,只更新目的地址的数据。 –dry-run标志来检查要复制、删除的数据
rclone move - 将源数据移动到目的地址,如果要在移动后删除空源目录,请加上 --delete-empty-src-d
rclone delete - 删除指定路径下的文件内容。
rclone purge - 清空指定路径下所有文件数据。
rclone mkdir - 创建一个新目录。
rclone rmdir - 删除空目录。
rclone rmdirs - 删除指定灵境下的空目录。如果加上 --leave-root 参数,则不会删除根目录。
rclone check - 检查源和目的地址数据是否匹配。
rclone ls - 列出指定路径下所有的文件以及文件大小和路径。
rclone lsd - 列出指定路径下所有的目录/容器/桶。
rclone lsl - 列出指定路径下所有文件以及修改时间、文件大小和路径。
rclone lsf - 列出指定路径下所有文件和目录
rclone md5sum - 为指定路径下的所有文件产生一个md5sum文件。
rclone sha1sum - 为指定路径下的所有文件产生一个sha1sum文件。
rclone size - 获取指定路径下,文件内容的总大小。.
rclone version - 查看当前版本。
rclone cleanup - 清空remote。
rclone dedupe - 交互式查找重复文件,进行删除/重命名操作。
fusermount -qzu 挂载网盘的文件夹绝对路径 - 取消挂载网盘,不用了以后一定要取消哦。

后台运行Rclone挂载网盘

凡是能后台运行的方法都可以

  1. supervisor

    supervisor 牛逼坏了,复杂但是强大。
    实在嫌麻烦也容易,就两个字 宝塔!

  1. nohup

    搜索nphup的用法,满街都是

    nohup # 后接填写需要执行的命令,注意前后有空格 &

  2. screen

    一般的linux系统都会自带screen,如果没有安装的话,使用

    sudo apt-get install screen

    或 centos

    sudo yum install screen

    新建一个名字为zio-1的窗口,并在窗口中执行命令

    screen -S zio-1 rclone mount ZIO-2:RXFiles /home/gdDisk/ZIO-2 # 巴拉巴拉后面一堆参数

    建议创建一个sh文件来管理screen,这个拓展就不赘述了。

  3. systemctl

    新建一个rclone.server文件,

    Ubuntu 18.04中:

    vim /lib/systemd/system/rclone.service

    写入以下内容:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #### https://www.yoursite.cn/2019/11/03/vps-gua-zai-onedrive-deng-wang-pan/
    [Unit]
    Description=rclone

    [Service]
    User=root
    ExecStart=/usr/bin/rclone mount DriveName:RemoteFolder LocalFolder --allow-other --allow-non-empty --vfs-cache-mode writes --config /home/br/.config/rclone/rclone.conf
    Restart=on-abort

    [Install]
    WantedBy=multi-user.target
    注意修改DriveName、RemoteFolder和LocalFolder的值
    然后重载daemon,使新的服务生效:

    systemctl daemon-reload
    设置开机启动

    rclone启动:
    systemctl start rclone
    开机启动:
    systemctl enable rclon

总结

上传速度还不错的,本来还想着要要一个大盘鸡的,现在1PB的挂载网盘,好像可以省点钱不用买了。

本来要写短篇博客的,结果rclone创建remote配置信息就一大堆。

不过只是看着多,但都是自动生成的选项,选择一下就好。

步骤多只是为了写得详细些,而是因为太复杂,静下心看就好。

×

也就放着玩的

扫码支持
扫码打赏,其实感觉也没人会给的。。

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 运行环境 Runtime environment
  • 背景
  • 安装Rclone
  • 配置Rclone
    1. 创建remote
    2. 设置remote名称
    3. 选择remote创建的类型
    4. 填写 Client Id && Client Secret
    5. 选择操作权限
    6. 根目录设置
    7. 设置选项
    8. 谷歌账号授权
    9. 是否是谷歌团队盘
    10. 选择要挂载的团队盘
    11. 信息核实
    12. romete列表
  • 映射谷歌网盘到文件夹
  • 常用命令
  • 后台运行Rclone挂载网盘
  • 总结
  • ,