作家
发布于 2025-11-21 / 26 阅读
0

Rclone 安装、配置、使用

前言

Rclone 是一个支持 70 多种云存储的备份工具,包括常见 S3 对象存储、WebDav、OneDrive 网盘等。设置好对应云存储后,只需通过 rclone copy 等简单的命令,即可将本地文件同步至云存储中。

一、安装

Rclone 的安装十分简单,可以选择官方提供的一键脚本一直安装,也可以直接下载二进制文件手动运行,选择其中一种方式即可

1、一键脚本

curl https://rclone.org/install.sh | sudo bash
bash <(curl -Ls https://rclone.org/install.sh)

或(官方)

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

2、手动安装

  1. 进入官方文档下载对应平台架构的二进制文件

  2. 将 rclone 文件移动到 /usr/bin 目录

  3. 赋予权限

chmod 755 /usr/bin/rclone
apt install -y unzip
wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
chmod 0777 ./rclone-*/rclone
cp ./rclone-*/rclone /usr/bin/
rm -rf ./rclone-*

3、检查是否安装正确

rclone version

二、获取token值

这里举例使用常用的OneDrive授权

1、首先在电脑上安装rclone

进入Rclone下载页面,点击下载Windows版本的Rclone软件,选择Intel/AMD-64Bit即可。如果是32位操作系统,那么选择32Bit的。

下载后将全部文件解压到D:\rclone文件夹

2、方法一通过rclone跳转

打开CMD命令窗口,依次输入下面两条命令。

cd /d d:\rclone
rclone authorize "onedrive"

第二条命令输入完回车后会自动打开浏览器,登录你的OneDrive账号,点击“是”按钮同意授权。成功后返回到CMD命令窗口就能看到长串授权码,即花括号以及里面的内容。

将授权码复制下来保存备用,有效期1个小时。

Paste the following into your remote machine --->

{"access_token":"EwCAA8l6BAAUwihrrCrmQ4wuIJX5mbj7rQla6TUAAS7oJFl1pmRc4whIlOj5am6oPQ+zf1kOcygsi5JHL2IgXh55prjh3r6P/fSZr8K9UJ58Pksh1YTJkzL/kHywyZnEvM8kDr55B1J//SXLJ1sGNsNR9vH0Rmz9xMrnl6GFrF8z+UQxi+GL3L3MpBN3NenacA0+pmVXKk8hghj64a8xxEFhlc+b0LJCp4yMg+96548752OPQwLZEPikbJ1zB5Wm5IUzuq03zNKa5lOicGET0l8zWW+itYg2Ca+mCS9DRm5e8NcPL5yiLZmRIm4vCI3pIQGKxEKghQG2lLmjMnWJj8BMotxH9Px2/XWs2TJ3BdLbuX2EjdYy8MNoBbaYXafe3uHx!UpdOwFHCiKnJqYomn*8cCFNP7RM1W8DMzXNBAlgTnuaRo6v7xjxFX3xIrXWonyCk*l1Z7glOXEmRS","expiry":"2021-09-16T15:47:47.8171297+08:00"}

<---End paste

3、方法二登录微软管理后台创建应用:

1.获取onedrive客户端Id和密钥

参考官方文档 Microsoft OneDrive (rclone.org)

1)在azure上注册新应用

访问 azure 注册应用,点击新注册

输入应用名称,选择任何组织目录(任何 Azure AD 目录 - 多租户)中的帐户和个人 Microsoft 帐户(例如,Skype、Xbox),重定向URI选择Web,并填入http://localhost:53682/,点击注册

注册成功后,点击概述,复制客户端ID备用

2)创建客户端密码

依次点击证书和密码新客户端密码,添加客户端密码,截止期限最多24个月,点击添加

复制密钥值备用!刚创建时才能看到密钥值,如果看不到了,就删掉重新创建试试吧。

3)设置API权限

依次点击API权限添加权限Microsoft Graph委托的权限,将以下权限全部勾选上 Files.Read, Files.ReadWrite, Files.Read.All, Files.ReadWrite.All, offline_access, User.Read, Sites.Read.All

最终的权限列表


2.接收许可获取token

打开CMD命令窗口,依次输入下面两条命令。

cd /d d:\rclone

或直接在rclone解压目录下运行命令行,输入以下命令

.\rclone.exe authorize onedrive "应用程序(客户端)ID" "客户端密钥值"

在弹出的浏览器中选择接受,回到命令行窗口,access_token已经打印屏幕上,复制token备用

三、配置 Rclone

Rclone 有提供官方的配置向导,根据提示填写对应的内容,即可生成配置文件;如果对 Rclone 配置比较熟悉的则可以直接编辑配置文件。下面分别用配置向导添加 OneDrive 网盘和配置文件直接添加 Minio S3 对象存储来进行演示

1、新手配置向导

1.输入

rclone config

2.输入字母 n,来新增一个云存储

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>

3.给云存储起个名字 (后续用命令行操作时会用到)

Enter name for new remote.

name> onedrive

4.接着会出现支持的云存储列表,输入 38 来选择 OneDrive (以实际显示的顺序为准)

38 / Microsoft OneDrive

\ (onedrive)

5.Client Id 和 Client Secert 可以直接回车使用默认值

Option client_id.

OAuth Client Id.

Leave blank normally.

Enter a value. Press Enter to leave empty.

client_id>

Option client_secret.

OAuth Client Secret.

Leave blank normally.

Enter a value. Press Enter to leave empty.

client_secret>

6.选择 OneDrive 的类型,一般输入 1 选择 Microsoft Cloud Global

Option region.

Choose national cloud region for OneDrive.

Choose a number from below, or type in your own string value.

Press Enter for the default (global).

1 / Microsoft Cloud Global

\ (global)

2 / Microsoft Cloud for US Government

\ (us)

3 / Microsoft Cloud Germany

\ (de)

4 / Azure and Office 365 operated by Vnet Group in China

\ (cn)

7.高级设置,输入 n 跳过

Edit advanced config?

y) Yes

n) No (default)

y/n>

8.下面需要打开 OneDrive 网页给 Rclone 授权,由于一般的 Linux 机器没有浏览器,所以输入 n

Use web browser to automatically authenticate rclone with remote?

* Say Y if the machine running rclone has a web browser you can use

* Say N if running rclone on a (remote) machine without web browser access

If not sure try Y. If Y failed, try N.

y) Yes (default)

n) No

9.关键步骤:将获取到的token填入下方的 config_token 中即可

Option config_token.

For this to work, you will need rclone available on a machine that has

a web browser available.

For more help and alternate methods see: https://rclone.org/remote_setup/

Execute the following on the machine with the web browser (same rclone

version recommended):

rclone authorize "onedrive" "xxxxxxxxxxxxxx"

Then paste the result.

Enter a value.

config_token>

10.选择你对应的onedrive的类型,一般选择1

Option config_type.

Type of connection

Choose a number from below, or type in an existing value of type string.

Press Enter for the default (onedrive).

1 / OneDrive Personal or Business

\ (onedrive)

2 / Root Sharepoint site

\ (sharepoint)

/ Sharepoint site name or URL

3 | E.g. mysite or https://contoso.sharepoint.com/sites/mysite

\ (url)

4 / Search for a Sharepoint site

\ (search)

5 / Type in driveID (advanced)

\ (driveid)

6 / Type in SiteID (advanced)

\ (siteid)

/ Sharepoint server-relative path (advanced)

7 | E.g. /teams/hr

\ (path)

11.选择需要使用的驱动器,根据实际因素,这里选择1

Option config_driveid.

Select drive you want to use

Choose a number from below, or type in your own value of type string.

Press Enter for the default (5008440B503864CC).

1 / OneDrive (personal)

2 / AEEE102E-CFF8-4E2A-89C6-03841FF83500 (personal)

12.后续步骤一路 y 即可,这样 OneDrive 就添加到我们的 Rclone 中了

2、进阶直接配置

输入 rclone config 后,会在 .config/rclone 目录中生成一个 rclone.conf 文件,如果我们熟悉 Rclone 配置的话,也可以直接新建编辑该文件,同样是可以生效的

以配置 Minio 为例,参照官方文档的 S3 对象存储部分,通过 vim .config/rclone/rclone.conf 编辑该文件,直接在其中填入云存储的相关配置信息即可

[minio]

type = s3

provider = Minio

env_auth = false

access_key_id = USWUXHGYZQYFYFFIT3RE

secret_access_key = MOJRH0mkL1IPauahWITSVvyDrQbEEIwljvmxdq03

region = us-east-1

endpoint = http://192.168.1.106:9000

location_constraint =

server_side_encryption =

3、检查是否配置成功

rclone lsd remote:

“remote”为新增的云存储名

四、使用rclone

直接使用

完成上述配置后,就可以直接使用 rclone copy 等命令将本地文件上传到云存储中

例如下面这行命令就是拷贝AAA云存储到BBB云存储,过程中显示进度及错误信息

rclone copy AAA: BBB: -vvP

定时任务

除此之外,我们还希望 Rclone 能定时运行,将文件备份到指定的云存储,这时候就需要用到 Linux 的 crontab 了

1、新建一个 sh 脚本,例如 rclone.sh,然后将上述的备份命令写入其中

#!/bin/bash

rclone copy /path/to/files minio:bucket

2、赋予运行权限

chmod 755 rclone.sh 

3、添加定时任务

crontab -e

0 0 * * * /root/rclone.sh >> /root/rclone.log 2>&1

4、保存后,每天的 0 点,就会自动运行 rclone.sh 脚本,将文件备份到我们指定的云存储中了

最佳实践

备份本地 /data/file 目录到腾讯云cos存储中,并设置定时任务每晚自动同步,这样可以达到定时备份重要文件上云的效果。

目录 /data/file 下创建 excludes.txt ,里面填写需要排除的文件列表。

logs/** # 排除logs下所有文件

.bak # 排除.bak结尾的文件

.zip # 排除.zip结尾的文件

配置腾讯云cos在此忽略,直接编写 rclone 命令,测试执行是否同步。

rclone sync -v /data/file tencent-cos:/beifen --exclude-from '/data/file/excludes.txt' >> /root/rclone.log 2>&1

手动执行一把,然后查看 tail -f /root/rclone.log 是否输出日志了,只要没报错则成功。

配置定时任务,每天自动执行

执行

crontab -e 

# 打开定时任务列表,跳到最后新起一行添加步骤2.成功的命令并保存,内容如下:(表示每晚3点30分进行同步)

30 4 * * * rclone sync -v /data/file tencent-cos:/beifen --exclude-from '/data/file/excludes.txt' >> /root/rclone.log 2>&1

执行以下重启定时任务生效

systemctl restart cron.service 

达到执行时间后检查 /root/rclone.log 下的日志保证没问题。

五、相关说明

语法

# 本地到网盘

rclone [功能选项] <本地路径> <配置名称:路径> [参数] [参数]

# 网盘到本地

rclone [功能选项] <配置名称:路径> <本地路径> [参数] [参数]

# 网盘到网盘

rclone [功能选项] <配置名称:路径> <配置名称:路径> [参数] [参数]

# [参数]为可选项

举例

# 同步本地/data/file的文件夹内容到tencent-cos存储下的/beifen文件夹中,并且排除/root/excludes.txt中指定的文件内容

rclone sync /data/file tencent-cos:/beifen --exclude-from '/root/excludes.txt'

# 两个网盘文件同步

rclone copy 配置网盘名称1:网盘路径 配置网盘名称2:网盘路径

操作命令(功能选项)

使用 rclone --help 可查看所有命令

常用的rclone命令有:

命令

说明

rclone config

以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中

rclone copy

将文件从源复制到目的地址,跳过已复制完成的

rclone move

将源数据移动到目的地址

rclone mount

挂载

rclone sync

将源数据同步到目的地址,只更新目的地址的数据

rclone size

获取指定路径下,文件内容的总大小

rclone delete

删除指定路径下的文件内容

rclone purge

清空指定路径下所有文件数据

rclone mkdir

创建一个新目录

rclone rmdir

删除空目录

rclone rmdirs

删除指定环境下的空目录。如果加上 --leave-root 参数,则不会删除根目录

rclone check

检查源和目的地址数据是否匹配

rclone ls

列出指定路径下所有的文件以及文件大小和路径

rclone lsl

列出指定路径下所有文件以及修改时间、文件大小和路径

rclone lsd

列出指定路径下所有的目录/容器/桶

rclone lsf

列出指定路径下的目录和文件

rclone md5sum

为指定路径下的所有文件产生一个md5sum文件

rclone sha1sum

为指定路径下的所有文件产生一个sha1sum文件

clone version

查看当前版本

rclone cleanup

清空remote

rclone dedupe

交互式查找重复文件,进行删除/重命名操作

功能介绍举例

  • rclone config

开启一个交互式的配置会话。命令格式如下:

rclone config
  • rclone copy

将文件从源复制到目的地址,跳过已复制完成的。命令格式如下:

rclone copy source:sourcepath dest:destpsth

注:1、rclone copy复制总是指定路径下的数据;而不是当前目录。
2、–no-traverse 标志用于控制是否列出目的地址目录。

  • rclone sync

rclone sync source:path dest:path

注:1、同步数据时,可能会删除目的地址的数据;建议先使用–dry-run标志来检查要复制、删除的数据。
2、同步数据出错时,不会删除任何目的地址的数据。
3、rclone sync同步的始终是path目录下的数据,而不是path目录。(空目录将不会被同步)

  • rclone move

rclone move source:path dest:path

注:1、同步数据时,可能会删除目的地址的数据;建议先使用–dry-run标志来检查要复制、删除的数据。

  • rclone purge

清空path目录和数据。命令格式如下:

rclone purge remote:path

注:1、此命令,include/exclude 过滤器失效。
2、删除path目录下部分数据,请使用rclone delete 命令

  • rclone mkdir

创建path目录。命令格式如下:

rclone mkdir remote:path
  • rclone rmdir

删除一个空目录。命令格式如下:

rclone rmdir remote:path

注:1、不能删除非空的目录,删除非空目录请使用 rclone purge。

  • rclone check

检查源和目标地址文件是否匹配。命令格式如下:

rclone check source:path dest:path

注:1、–size-only标志用于指定,只比较大小,不比较MD5SUMs。

  • rclone ls

列出指定path下,所有的文件以及文件大小和路径。命令格式如下:

rclone ls remote:path
  • rclone lsd

列出指定path下,所有目录、容器、桶。命令格式如下:

rclone lsd remote:path
  • rclone delete

删除指定目录的内容。命令格式如下:

rclone delete remote:path

注:1、不同于rclone purge,rclone delete 可使用 include/exclude 过滤器选择删除文件内容。
eg:删除文件大小大于100M的文件

# 先检查哪些文件将被删除

rclone --min-size 100M lsl remote:path # 使用rclone lsl 列出大于100M的文件

rclone --dry-run --min-size 100M delete remote:path # 使用--dry-run 检查将要被删除的文件

# 使用 rclone delete 进行文件删除

rclone --min-size 100M delete remote:path

  • rclone size

获取指定path下所有数据文件的总大小。命令格式如下:

rclone size remote:path
  • more

更多rclone命令,详见http://rclone.org/commands/

常用参数

代码

说明

-n = --dry-run

测试运行,查看 rclone 在实际运行中会进行哪些操作

-P = --progress

显示实时传输进度,500 ms刷新一次,否则默认1分钟刷新一次

--cache-chunk-size 5M

块的大小,默认 5M 越大上传越快,占用内存越多,太大可能会导致进程中断

--onedrive-chunk-size 100M

提高 OneDrive 上传速度适用于G口宽带服务器

--drive-chunk-size 64M

提高 Google Drive 上传速度适用于G口宽带服务器

--cache-chunk-total-size SizeSuffix

块可以在本地磁盘上占用的总大小

--transfers=N

并行文件数,默认为4。在比较小的内存的VPS上建议调小这个参数,比如 128M 的小鸡上使用建议设置为1。

--config string

指定配置文件路径,string为配置文件路径

--ignore-errors

跳过错误

--size-only

根据文件大小校验,不校验hash

--drive-server-side-across-configs

服务端对服务端传输

日志

rclone 有 4 个级别的日志记录,ERROR,NOTICE,INFO 和 DEBUG。默认情况下,rclone 将生成 ERROR 和 NOTICE 级别消息。

代码

说明

-q

rclone将仅生成 ERROR 消息

-v

rclone将生成 ERROR,NOTICE 和 INFO 消息,推荐此项

-vv

rclone 将生成 ERROR,NOTICE,INFO和 DEBUG 消息

--log-level LEVEL

标志控制日志级别

过滤

我们若同步的时候需要过滤掉一些不重要的文件的话,比如程序启动日志、敏感文件。

代码

说明

--exclude-from

排除文件或目录列表来自某个文件指定

--include-from

包含文件或目录来自某个文件指定

--filter-from

文件过滤规则来自某个文件指定

--exclude

排除文件或目录

--include

包含文件或目录

--filter

文件过滤规则,相当于上面两个选项的其它使用方式。包含规则以+开头,排除规则以-开头

文件类型过滤

代码

说明

同效代码

--exclude "*.bak"

表示排除所有 .bak 结尾的文件

--filter "- *.bak"

--include "*.{png,jpg}"

包含所有 png 和 jpg 文件,排除其他文件

--filter "+ *.{png,jpg}"

--delete-excluded

删除排除的文件。需配合过滤参数使用,否则无效。

目录过滤

目录过滤需要在目录名称后面加上 /,否则会被当做文件进行匹配。以 / 开头只会匹配根目录(指定目录下),否则匹配所目录。这同样适用于文件。

代码

说明

--exclude ".git/"

排除所有目录下的.git 目录

--exclude "/.git/"

只排除根目录下的.git 目录

--exclude "{Video,Software}/"

排除所有目录下的 Video 和 Software 目录

--exclude "/{Video,Software}/"

只排除根目录下的 Video 和 Software 目录

--include "/{Video,Software}/**"

仅包含根目录下的 Video 和 Software 目录的所有内容

大小过滤

默认大小单位为 kBytes ,但可以使用 k ,M 或 G 后缀。

代码

说明

举例

--min-size

过滤小于指定大小的文件

--min-size 50 表示不会传输小于 50k 的文件

--max-size

过滤大于指定大小的文件

--max-size 1G 表示不会传输大于 1G 的文件

过滤规则来自某个文件

代码

说明

--exclude-from <规则文件>

从文件添加包含规则

-include-from <规则文件>

从文件添加删除规则

--filter-from <规则文件>

从文件添加包含 / 排除规则。比如 --filter-from filter-file.txt

filter-file.txt 示例:

- secret*.jpg

+ .jpg

+ .png

+ file2.avi

- /dir/Trash/**

+ /dir/**

- *

环境变量

rclone 中的每个选项都可以通过环境变量设置。环境变量的名称可以通过长选项名称进行转换,删除 -- 前缀,更改 - _ ,大写并添加前缀 RCLONE_ 。环境变量的优先级会低于命令行选项,即通过命令行追加相应的选项时会覆盖环境变量设定的值。

比如设置最小上传大小 --min-size 50 ,使用环境变量是 RCLONE_MIN_SIZE=50 。当环境变量设置后,在命令行中使用 --min-size 100 ,那么此时环境变量的值就会命令行覆盖,最终生效的是 --min-size 100

代码

说明

RCLONE_CONFIG

自定义配置文件路径

RCLONE_CONFIG_PASS

若 rclone 进行了加密设置,把此环境变量设置为密码,可自动解密配置文件

RCLONE_RETRIES

上传失败重试次数,默认 3 次

RCLONE_RETRIES_SLEEP

上传失败重试等待时间,默认禁用,单位s、m、h分别代表秒、分钟、小时

CLONE_TRANSFERS

并行上传文件数

RCLONE_CACHE_CHUNK_SIZE

块的大小

RCLONE_CACHE_CHUNK_TOTAL_SIZE

块可以在本地磁盘上占用的总大小

RCLONE_IGNORE_ERRORS=true

跳过错误

参考资料:

https://zhichao.org/posts/rclone

https://www.kedr.cc/posts/4034988835/

https://cloud.tencent.com/developer/article/1150536?policyId=1004

https://softlns.github.io/2016/11/28/rclone-guide/