Rclone & OneDrive
通过 Rclone 挂载 OneDrive 扩展服务器存储
前言 #
Rclone 是一款功能强大的开源命令行工具,被誉为“云存储领域的瑞士军刀”。它支持超过40种主流云存储服务,包括 OneDrive、Google Drive 和 Dropbox 等。通过 Rclone,你可以将远端的云存储目录挂载到本地服务器,像使用一块普通硬盘一样无缝地读写文件,从而实现经济高效的服务器扩容。
本教程将详细介绍如何在 Linux 服务器上安装、配置 Rclone,并实现将 OneDrive 网盘挂载为本地目录,最后设置为开机自动挂载,让你的云存储真正融入服务器文件系统。
第一步:安装 Rclone #
对于 Linux、macOS 或 BSD 系统,官方提供了一键式安装脚本:
sudo -v ; curl [https://rclone.org/install.sh](https://rclone.org/install.sh) | sudo bash
对于 Windows 用户,可以根据你的系统架构从官网下载预编译好的程序包:
第二步:获取 OneDrive 授权 #
为了让 Rclone 有权限访问你的 OneDrive 文件,需要进行一次授权。由于服务器通常没有图形界面,这个过程需要在你的本地电脑(或任何有浏览器的设备)上完成。
-
在你的本地电脑终端(或任何安装了 Rclone 的地方)运行以下命令:
rclone authorize "onedrive"
-
该命令会自动打开你的默认浏览器,并跳转到微软登录页面。登录你的 OneDrive 账户并授予 Rclone 访问权限。
-
授权成功后,浏览器页面会显示成功信息,同时运行命令的终端会返回一串 JSON 格式的授权码(Token)。完整复制这段以
{
开始、以}
结束的代码,它将在下一步配置服务器时使用。Paste the following into your remote machine ---> {"access_token":"......","token_type":"Bearer",...} // 务必完整复制整段 JSON 内容 <---End paste
注意: 这个授权码的有效期通常为一个小时,获取后尽快完成后续配置。
第三步:在服务器上配置 Rclone #
现在,回到你的服务器终端,我们将通过交互式命令行工具来配置 Rclone。
-
启动 Rclone 配置向导:
rclone config
-
创建新的远程连接 (New Remote):
- 在提示符下输入
n
并按回车,表示创建一个新的远程连接。 - 为这个连接命名,例如
onedrive
,然后按回车。
n) New remote s) Set configuration password q) Quit config n/s/q> n name> onedrive
- 在提示符下输入
-
选择存储类型 (Storage Type):
- Rclone 会列出所有支持的云服务。找到
Microsoft OneDrive
对应的编号并输入。这个编号可能会因 Rclone 版本而异,请仔细查找。
Type of storage to configure. ... 34 / Microsoft OneDrive \ "onedrive" ... Storage> 34
- Rclone 会列出所有支持的云服务。找到
-
进行核心配置:
- Client ID & Client Secret: 直接按回车跳过,使用默认值即可。
- 选择区域: 如果你使用的是标准版的 OneDrive,输入
1
(Microsoft Cloud Global)。如果使用的是由世纪互联运营的中国版 OneDrive,输入4
。 - 编辑高级配置: 输入
n
,选择不进行高级配置。 - 使用自动配置: 这是关键一步。因为我们是在没有图形界面的服务器上操作,所以必须选择
n
(否),以便手动粘贴授权码。
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
- 粘贴授权码: 在
config_token>
提示符后,粘贴你在第二步中获得的完整 JSON 授权码,然后按回车。
-
选择驱动器类型 (Drive Type):
- 系统会询问你要连接的驱动器类型。对于个人版或商业版 OneDrive,选择
1
(OneDrive Personal or Business)。 - 接下来会显示找到的驱动器,确认无误后输入
y
。 - 最后,Rclone 会显示完整的配置信息。确认无误后,输入
y
保存。
- 系统会询问你要连接的驱动器类型。对于个人版或商业版 OneDrive,选择
-
退出配置:
- 你会看到刚才创建的
onedrive
已列在远程连接列表中。输入q
退出配置界面。
- 你会看到刚才创建的
-
验证配置:
- 我们可以通过一个简单的命令来测试连接是否成功。例如,创建一个测试文件并尝试将其移动到 OneDrive 的根目录:
touch test.txt rclone move test.txt onedrive:
- 然后登录你的 OneDrive 网页版,检查根目录下是否出现了
test.txt
文件。如果出现,则证明配置成功。
第四步:挂载 OneDrive 目录 #
配置完成后,我们就可以将 OneDrive 挂载到服务器的本地文件系统了。
-
首先,创建一个本地目录作为挂载点:
sudo mkdir -p /mnt/onedrive
-
执行挂载命令。以下命令会将你 OneDrive 根目录下的
data
文件夹挂载到服务器的/mnt/onedrive
目录。rclone mount onedrive:/data /mnt/onedrive \ --copy-links \ --no-gzip-encoding \ --no-check-certificate \ --allow-other \ --allow-non-empty \ --umask 000 \ --daemon
onedrive:/data
: 表示名为onedrive
的远程连接下的/data
目录。若要挂载整个网盘,请使用onedrive:
。/mnt/onedrive
: 本地挂载点路径。--daemon
: 让 Rclone 在后台运行,即使关闭终端也不会中断。--allow-other
: 允许系统上的其他用户访问挂载点中的文件。
-
验证挂载:
- 使用
df -h
命令查看磁盘列表。如果能看到onedrive:/data
或类似的条目,说明挂载成功。
- 使用
第五步:设置开机自动挂载 #
为了避免每次服务器重启后都需手动挂载,我们可以创建一个 systemd
服务来实现开机自动运行。
-
创建服务文件:
sudo nano /etc/systemd/system/rclone-mount.service
-
粘贴服务配置: 将以下内容粘贴到编辑器中。请注意修改
User
和ExecStart
中的路径为你自己的配置。[Unit] Description=RClone Mount for OneDrive AssertPathIsDirectory=/mnt/odr After=network-online.target [Service] Type=simple # 修改为你的系统用户名,非 root 用户请确保有挂载点目录的权限 User=root # ExecStartPre=/bin/mkdir -p /mnt/odr # 如果你不确定目录是否存在,可以取消此行注释 ExecStart=/usr/bin/rclone mount onedrive: /mnt/odr \ --allow-other \ --dir-cache-time 72h \ --vfs-cache-mode writes \ --log-file /var/log/rclone.log \ --log-level INFO \ --umask 002 Restart=on-abort RestartSec=5 [Install] WantedBy=multi-user.target
参数解释:
After=network-online.target
: 确保在网络连接建立之后再执行挂载。User
: 运行此服务的系统用户。--vfs-cache-mode writes
: 开启VFS文件缓存(写入模式),可以显著提升文件读写性能和兼容性,强烈建议开启。--dir-cache-time
: 目录结构缓存时间,减少API请求。--log-file
: 指定日志文件路径,方便排错。--umask
: 设置挂载点中文件的权限掩码。
-
启用并启动服务:
sudo systemctl daemon-reload # 重新加载 systemd 配置 sudo systemctl enable --now rclone-mount.service # 设置开机自启并立即启动服务
-
最后验证:
- 重启服务器
sudo reboot
。 - 待服务器重连后,执行
df -h
检查 OneDrive 是否已自动挂载。
- 重启服务器
All is well.