Rclone 是一个支持 70 多种云存储的备份工具,包括常见 S3 对象存储、WebDav、OneDrive 网盘等。设置好对应云存储后,只需通过 rclone copy 等简单的命令,即可将本地文件同步至云存储中
登录后获取我们的 租户ID
租户ID:aaaabbbb-ssss-ssss-ssss-aaaaaaaaaaaa
获取客户端ID及秘钥
- 注册一个应用,类型自己选,建议选第三吧
- 重定向URL(回调参数),类型选择Web,参数填写:
https://entra.microsoft.com/TokenAuthorize和http://localhost:53682,否则后面授权时无法授权。 - 填好后点击下方的注册 跳转后就可以看到
客户端ID
我们去获取一个客户端秘钥,按照下图获取即可,记得 客户端秘钥 要及时保存,只会出现一次
这一步需要记录
客户端ID:格式同租户ID一致
客户端秘钥:M_<一串字符>
授权API
客户端秘钥拿到了,去授权一下使用的 API,依旧跟着下图获取即可
授权组织应用
API授权后,我们去授权组织应用
左侧侧边栏 —> 企业应用程序 —> 所有应用程序 —> {选择我们开始新建的那个应用名称} —> 权限 —> 点击 代表xxxx授予管理员同意
总结
通过以上操作,你现在有了
你的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
手动安装
- 进入官方文档下载对应平台架构的二进制文件
- 将 rclone 文件移动到
/usr/bin目录 - 赋予权限
chmod 755 /usr/bin/rclone
配置 Rclone
Rclone 有提供官方的配置向导,根据提示填写对应的内容,即可生成配置文件;如果对 Rclone 配置比较熟悉的则可以直接编辑配置文件。下面分别用配置向导添加 OneDrive 网盘和配置文件直接添加 Minio S3 对象存储来进行演示
配置向导
- 输入
rclone config - 输入字母 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>
- 给云存储起个名字 (后续用命令行操作时会用到)
Enter name for new remote.
name> onedrive
- 接着会出现支持的云存储列表,输入 33 来选择 OneDrive (以实际显示的顺序为准)
38 / Microsoft OneDrive
\ (onedrive)
- 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>(客户端秘钥)
- 选择 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)
- 高级设置,输入 n 跳过
Edit advanced config?
y) Yes
n) No (default)
y/n>
- 下面需要打开 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
- 关键步骤:我们需要在 Windows 上也下载一个 Rclone,去官方网站,下载 电脑版Rclone,必须和VPS的版本一致。在解压后的文件夹里面,“右键在终端打开”,然后在 Rclone 的目录运行
.\rclone.exe authorize "onedrive" "后会弹出浏览器,登录 OneDrive 账号后,命令行中会显示出授权码,将其填入下方的 config_token 中即可eyxxxxxxxxxxxx"
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>
- 后续步骤一路 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 了
- 新建一个 sh 脚本,例如 rclone.sh,然后将上述的备份命令写入其中
#!/bin/bash
rclone copy /path/to/files minio:bucket
- 赋予运行权限
chmod 755 rclone.sh - 添加定时任务
crontab -e
0 0 * * * /root/rclone.sh >> /root/rclone.log 2>&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 "备份任务完成!"
💡 关键建议:
- 关于 E3 账号配置:在运行脚本前,请确保你已经在这台 VPS 上执行了
rclone config,并且设置的名字就是onedrive。 - 网络速度:如果你的 VPS 在海外(如美国、日本、新加坡),这种配置下,备份速度通常能跑满带宽,几分钟就能搞定。
- 日志查看:如果担心备份没成功,可以运行
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