网站搭建
技术教程
ZAP-Hosting Gameserver and Webhosting

Rclone 连接OneDrive 教程

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

登录后获取我们的 租户ID
image

租户ID:aaaabbbb-ssss-ssss-ssss-aaaaaaaaaaaa

获取客户端ID及秘钥

  1. 注册一个应用,类型自己选,建议选第三吧
  2. 重定向URL(回调参数),类型选择Web,参数填写: https://entra.microsoft.com/TokenAuthorize 和http://localhost:53682,否则后面授权时无法授权。
  3. 填好后点击下方的注册 跳转后就可以看到客户端ID
    image
    我们去获取一个客户端秘钥,按照下图获取即可,记得 客户端秘钥 要及时保存,只会出现一次
    image
    这一步需要记录
客户端ID:格式同租户ID一致
客户端秘钥:M_<一串字符>

授权API

客户端秘钥拿到了,去授权一下使用的 API,依旧跟着下图获取即可
image

授权组织应用

API授权后,我们去授权组织应用
左侧侧边栏 —> 企业应用程序 —> 所有应用程序 —> {选择我们开始新建的那个应用名称} —> 权限 —> 点击 代表xxxx授予管理员同意
image

总结

通过以上操作,你现在有了

你的E3管理员或者用户账户:XX@XXXX.onmicrosoft.com
租户ID:aaaabbbb-ssss-ssss-ssss-aaaaaaaaaaaa
客户端ID:格式同租户ID一致
客户端秘钥:M_<一串字符>

现在用以上信息构建一个链接

https://login.microsoftonline.com/{租户ID}/adminConsent?client_id={客户端ID}&redirect_uri={https://entra.microsoft.com/TokenAuthorize}

在浏览器访问这个链接,登录你的E3管理员账号,就可以授权访问了

添加存储,驱动选择OneDrive App,其他的常规填写,重点是以下6个:

地区:国际版
客户端 ID:你刚刚记录的
客户端密钥:你刚刚记录的
租户 ID:你刚刚记录的
邮箱:你刚刚记录的,或者你可以在你的E3里新增用户填进去
分片大小:最大250,多了不行

保存之后就挂载好了

然后输入n,如果你也是v1.71.2,那么输入38就是OneDrive
随后除了以下几个参数需要填写,其他的都默认

client_id>:你刚刚记录的客户端ID
client_secret>:你刚刚记录的客户端秘钥
tenant>:你刚刚记录的租户ID

安装

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

一键脚本

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

手动安装

  1. 进入官方文档下载对应平台架构的二进制文件
  2. 将 rclone 文件移动到 /usr/bin 目录
  3. 赋予权限 chmod 755 /usr/bin/rclone

配置 Rclone

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

配置向导

  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>
  1. 给云存储起个名字 (后续用命令行操作时会用到)
Enter name for new remote.
name> onedrive
  1. 接着会出现支持的云存储列表,输入 33 来选择 OneDrive (以实际显示的顺序为准)
38 / Microsoft OneDrive
   \ (onedrive)
  1. Client Id 和 Client Secert 可以直接回车使用默认值
Option client_id.
OAuth Client Id.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_id>  (客户端ID)

Option client_secret.
OAuth Client Secret.
Leave blank normally.
Enter a value. Press Enter to leave empty.
client_secret>(客户端秘钥)
  1. 选择 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)
  1. 高级设置,输入 n 跳过
Edit advanced config?
y) Yes
n) No (default)
y/n>
  1. 下面需要打开 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
  1. 关键步骤:我们需要在 Windows 上也下载一个 Rclone,去官方网站,下载 电脑版Rclone,必须和VPS的版本一致。在解压后的文件夹里面,“右键在终端打开”,然后在 Rclone 的目录运行 .\rclone.exe authorize "onedrive" "eyxxxxxxxxxxxx" 后会弹出浏览器,登录 OneDrive 账号后,命令行中会显示出授权码,将其填入下方的 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" "eyxxxxxxxxxxxx"
Then paste the result.
Enter a value.
config_token> 
  1. 后续步骤一路 y 即可,这样 OneDrive 就添加到我们的 Rclone 中了

配置文件

输入 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 =

使用 Rclone

直接使用

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

例如下面这行命令就是把 /path/to/files 上传至 minio 中的 bucket 桶中,其中 : 前的代表上面配置的云存储,后面的代表文件夹名或者桶名

rclone copy /path/to/files minio:bucket

定时任务

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

  1. 新建一个 sh 脚本,例如 rclone.sh,然后将上述的备份命令写入其中
#!/bin/bash
rclone copy /path/to/files minio:bucket
  1. 赋予运行权限 chmod 755 rclone.sh
  2. 添加定时任务 crontab -e
0 0 * * *  /root/rclone.sh >> /root/rclone.log 2>&1
  1. 保存后,每天的 0 点,就会自动运行 rclone.sh 脚本,将文件备份到我们指定的云存储中了

退出后,立刻验证是否成功(强烈建议)

1️⃣ 查看远程盘是否存在

rclone listremotes

正常输出应为:

onedrive:

2️⃣ 列出 OneDrive 根目录(验证权限)

rclone ls onedrive:

或:

rclone lsd onedrive:

如果能看到目录 / 文件
说明配置 100% 成功

为什么 OneDrive 根目录会是空的?

对于 Microsoft 365 / 商业版 OneDrive

  • 新账号 / 新租户
  • 或从未在网页版创建文件
  • 根目录默认是 空的

这在 rclone 中就会表现为:

# 没有输出

这是完全正常行为


三、做 3 个“确认性测试”(确保 100% 完美)

✅ 测试 1:查看磁盘信息(最重要)

rclone about onedrive:

正常会看到类似:

Total:   1.0 TiB
Used:    0 B
Free:    1.0 TiB

只要能看到 容量信息
➡️ 说明已经是真正连接到了 OneDrive API


✅ 测试 2:创建一个测试目录

rclone mkdir onedrive:test

然后:

rclone lsd onedrive:

应该看到:

          -1 2026-01-08  test

✅ 测试 3:上传一个文件(最终确认)

echo "rclone ok" > test.txt
rclone copy test.txt onedrive:test

再列一次:

rclone ls onedrive:test

应看到:

       9 test.txt

下一步推荐你直接做的 3 件事(实战)

1️⃣ 挂载到本地(最常用)

mkdir -p /mnt/onedrive
rclone mount onedrive: /mnt/onedrive \
  --allow-other \
  --vfs-cache-mode full \
  --daemon

然后:

df -h | grep onedrive

既然你的 4 核 8G VPS 使用的是 AMD EPYC 7763,且你有充足的 E3 订阅授权(每台 VPS 独享一个账号),这台机器的性能完全可以发挥得更好。

对于这台 7763 机器,虽然核心数(4核)比另外两台少,但单核性能极强。在独享 OneDrive 账号的情况下,你可以直接使用以下经过针对性优化的命令。

1. 7763 (4核/8G) 专属高性能备份命令

rclone copy /www/wwwroot/maiyanhua.de onedrive:maiyanhua.de/$(date +%Y%m%d) \
    --progress \
    --transfers 8 \
    --checkers 16 \
    --drive-chunk-size 128M \
    --buffer-size 64M \
    --tpslimit 12 \
    --tpslimit-burst 12 \
    --vfs-cache-mode writes \
    --retries 3 \
    --low-level-retries 10 \
    --exclude "node_modules/**" \
    --exclude "vendor/**" \
    --exclude "storage/framework/cache/**" \
    --exclude "storage/logs/**" \
    --log-file /var/log/rclone_v2b_7763.log

2. 为什么对这台机器这样配置?

  • 独享账号的红利:由于不用和其他 VPS 抢 API 频次,我们将 --tpslimit 提高到了 12。这能让 7763 快速处理文件比对,减少备份开始前的等待时间。
  • 内存平衡 (128M):8 个并发线程(transfers 8)配合 128M 的分块大小,大约会占用 1GB 到 1.5GB 的内存。对于 8G 内存的 VPS 来说,这非常安全,既能保证大文件上传极快,又不会导致 v2board 面板出现 502 报错。
  • 并发数 (8):7763 的 4 个核心(8 线程)完全能胜任 8 个并发同步任务。

3. 针对 V2Board 的完整自动化脚本 (aaPanel)

建议你直接在 aaPanel 的“计划任务”里添加以下脚本。它涵盖了数据库打包文件同步过期删除三个环节:

#!/bin/bash

# --- 基础配置 ---
SITE_NAME="maiyanhua.de"
SITE_PATH="/www/wwwroot/$SITE_NAME"
REMOTE_PATH="onedrive:$SITE_NAME"
DATE=$(date +%Y%m%d)

# --- 1. 导出并压缩数据库 ---
# 利用 7763 的强大单核性能,瞬间完成压缩
DB_USER="你的数据库用户名"
DB_PASS="你的数据库密码"
DB_NAME="你的数据库名"
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $SITE_PATH/db_backup_$DATE.sql.gz

# --- 2. 运行 rclone 同步 ---
rclone copy $SITE_PATH $REMOTE_PATH/$DATE \
    --transfers 8 \
    --checkers 16 \
    --drive-chunk-size 128M \
    --buffer-size 64M \
    --tpslimit 12 \
    --exclude "node_modules/**" \
    --exclude "vendor/**" \
    --exclude "storage/framework/cache/**" \
    --exclude "storage/logs/**"

# --- 3. 清理工作 ---
# 删除本地压缩包,保持 VPS 空间整洁
rm -f $SITE_PATH/db_backup_$DATE.sql.gz

# --- 4. 自动清理 OneDrive 上的旧备份 (保留 7 天) ---
# 因为你每个 VPS 有独立 1TB/5TB 空间,如果不差空间,可以改成 30d
rclone delete $REMOTE_PATH --min-age 7d --rmdirs

echo "备份任务完成!"

💡 关键建议:

  1. 关于 E3 账号配置:在运行脚本前,请确保你已经在这台 VPS 上执行了 rclone config,并且设置的名字就是 onedrive
  2. 网络速度:如果你的 VPS 在海外(如美国、日本、新加坡),这种配置下,备份速度通常能跑满带宽,几分钟就能搞定。
  3. 日志查看:如果担心备份没成功,可以运行 tail -f /var/log/rclone_v2b_7763.log 观察实时状态。

既然你有 25 个 E3 授权,你会考虑给每台机器再加一个“异地备份账号”(即一台 VPS 同时备份到两个 OneDrive 账号)来做双保险吗?

. 7532 (16核/16G) 专属高性能命令

由于这台机器核心极多,我们将重点放在并发扫描中等分块上,以平衡内存使用。

rclone copy /www/wwwroot/in.aiark.cc onedrive:in.aiark.cc/$(date +%Y%m%d) \
    --progress \
    --transfers 12 \
    --checkers 32 \
    --drive-chunk-size 128M \
    --buffer-size 64M \
    --tpslimit 12 \
    --tpslimit-burst 15 \
    --vfs-cache-mode writes \
    --retries 3 \
    --exclude "node_modules/**" \
    --exclude "vendor/**" \
    --exclude "storage/framework/cache/**" \
    --exclude "storage/logs/**" \
    --log-file /var/log/rclone_v2b_7532.log

7K62 (16核/32G) 专属“全速”命令

rclone copy /www/wwwroot/qqvps.cc onedrive:qqvps.cc/$(date +%Y%m%d) \
    --progress \
    --transfers 16 \
    --checkers 48 \
    --drive-chunk-size 256M \
    --buffer-size 128M \
    --tpslimit 15 \
    --tpslimit-burst 20 \
    --vfs-cache-mode writes \
    --retries 5 \
    --exclude "node_modules/**" \
    --exclude "vendor/**" \
    --exclude "storage/framework/cache/**" \
    --exclude "storage/logs/**" \
    --log-file /var/log/rclone_v2b_7K62.log
赞(0) 打赏
未经允许不得转载:科技宝典 » Rclone 连接OneDrive 教程