通过 莫拉
部分系统的部分命令可能与文章中有所不同,请仔细斟酌。
最近放暑假了,在家里闲着无聊开始研究起了个人网盘,发现可以把国内一直很难用的 OneDrive 挂载到个人网盘上。 反正我的服务器在国外(Doge),可以利用这个优势来得到一个速度高度可用的“OneDrive”。
于是我在网上找了很久,终于找到了一个好东西——Rclone,Rclone 是一个开源的命令行程序,用于管理云存储上的文件。它是云供应商的 Web 存储接口的功能丰富的替代方案。超过40种云存储产品支持 Rclone ,包括S3对象存储,商业和消费者文件存储服务以及标准传输协议。虽然网上有很多 Rclone 教程,但是它们要么缺少了很多重要的需要注意的点,要么年代久远,软件早已更新。所以我打算写一篇所谓的教程,实际上你可以把它称为“记录”。
1.vps 安装 Rclone
安装 Rclone 我用的是脚本安装,直接在 SSH 中复制下列命令执行即可,理论上兼容大部分系统与架构。
curl https://rclone.org/install.sh | sudo bash
安装完成后,执行命令 rclone version 检查是否正确安装,如果安装正确,会出现类似下面的信息:
rclone version #检查版本信息
rclone v1.59.0 #返回信息
- os/version: centos 7.9.2009 (64 bit)
- os/kernel: 5.15.38-1.el7.x86_64 (x86_64)
- os/type: linux
- os/arch: amd64
- go/version: go1.18.3
- go/linking: static
- go/tags: none
2.获取token
由于 OneDrive 第三方挂载需要登录微软账号以获取 token,而目前大多数 vps 所用的系统并没有图形界面,所以获取 token 需要利用 Windows 等其他带有图形界面的系统环境。我这里直接使用 Windows 获取 token,然后将其粘贴进 vps 上的 rclone 客户端中。
Windows 下载地址 点这里(1.59版本)
下载后解压,然后在解压后的目录右键单击“在终端中打开”。(有些系统是“在 powershell 中打开”)
输入 Rclone version【如果是 powershell,请在开头添加 ./ (之后所有在 Windows 下的操作亦如此)】 检查版本是否正确。
检查后,输入 Rclone config. 然后输入 n 创建一个新的对象,输入对象的名字,这里为 OneDrive 。也可以是其他的名字。
./rclone config
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
Enter name for new remote.
name> onedrive #远程目标名称
在出来的选项中找到 Microsoft OneDrive,输入左侧的序号。(这里的序号会随着更新而发生变化)
client_id 与 client_secret 均回车跳过输入,使用 Rclone 自带的 API 与 OneDrive 交换数据。
Storage> 32 #该版本 OneDrive 是32号
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> #回车,不输入
在出来的选项中输入左侧的序号来选择你所使用的 OneDrive 体系。我是 global ,所以选择1。Edit advanced config? 输入 n ; Use auto config? 输入 y .
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 21Vianet in China
\ (cn)
region> 1 #一般情况下选择1
Edit advanced config?
y) Yes
n) No (default)
y/n> n #获取token无需使用高级设置
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> y #使用自动设置
接下来,会自动打开浏览器登录页面,按照提示登录微软账户,选择同意接入。当成功获取 token 时,浏览器中会有“All done. Please go back to rclone.”字样。
设置连接类型,这里使用的是 OneDrive,所以输入1,config_driveid 请按回车跳过输入。然后会显示你的 OneDrive 账户,核对无误后输入 y.
NOTICE: Log in and authorize rclone for access
NOTICE: Waiting for code...
NOTICE: Got code
Option config_type.
Type of connection
Choose a number from below, or type in an existing string value.
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)
config_type> 1 #设置连接类型
Option config_driveid.
Select drive you want to use
Choose a number from below, or type in your own string value.
Press Enter for the default (bb8aa980707d4027).
1 / (personal)
\ (bb8aa980707d4027)
config_driveid>
Drive OK? #确认信息是否正确
Found drive "root" of type "personal"
URL: https://onedrive.live.com/?cid=bb8aa980707d4027
y) Yes (default)
n) No
y/n> y #输入确认信号
然后命令提示符中会出现 token ,注意,token 的开头是 {“access_token”: ,结尾是 “expiry”:”你当前的时间+你当前的时区”},要保证全部复制。
3.vps 配置
vps 端的配置方法和 Windows 端大体一样,唯一的不同就是 Use auto config? 需要输入 n,然后粘贴刚刚在 Windows 端生成的 token.
配置好 vps 端的 rclone 后,安装其所需的 FUSE 依赖。
yum -y install fuse
创建挂载目录,如果使用网盘,需挂载至指定目录。我这里使用的是 kodcloud 1.32 版本。
mkdir -p /www/wwwroot/pan.wljay.cn/data/files/onedrive #不一致的系统挂载目录不一致,需要自己指定
4.挂载 OneDrive
输入挂载命令
- #remote_name 是 vps 端 rclone 的 remote 名称
- #onedrive_path 是你想挂载的 OneDrive 目录
- #local_path 是 OneDrive 挂载的本地位置
rclone mount #remote_name:#onedrive_path #local_path
挂载命令后可加入不同的参数,列出几个常用的参数。
–allow-other #允许非当前 rclone 用户访问资源(建议)
–vfs-cache-mode full #开启 VFS 文件缓存(建议)
–vfs-cache-max-size 10G #VFS 文件缓存上限大小
–vfs-cache-max-age 24h #VFS 文件缓存时间
–daemon #以后台方式运行(建议)
–vfs-read-chunk-size-limit 150m #分块读取大小,可提高文件读取速率
–buffer-size 100M #内存缓存,建议按 VPS 配置设置
–attr-timeout 5m #文件属性缓存大小,如果 VPS 配置比较低,亦可适当提高此值
mount 命令加上参数后就是一条可直接使用的命令。
rclone mount #remote_name:#onedrive_path #local_path --allow-other --vfs-cache-mode full --vfs-cache-max-size 10G --vfs-cache-max-age 24h --daemon --vfs-read-chunk-size-limit 150m --buffer-size 100M
执行后可使用 df -h 查看是否挂载成功,如果成功,挂载的磁盘列表中将出现 #remote_name.
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 452M 0 452M 0% /dev
tmpfs 490M 16K 490M 1% /dev/shm
tmpfs 490M 6.8M 483M 2% /run
tmpfs 490M 0 490M 0% /sys/fs/cgroup
/dev/vda1 30G 19G 9.4G 67% /
tmpfs 98M 0 98M 0% /run/user/0
onedrive:files 5.0T 2.1G 5.0T 1% /www/wwwroot/pan.wljay.cn/data/files/onedrive
5.相关配置
开机自动挂载
建立一个新的 systemd 配置文件,定义开机所执行的动作。
cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
After=network-online.target
[Service]
User=root
Type=simple
ExecStart=/usr/bin/rclone mount #remote_name:#onedrive_path #local_path --allow-other --vfs-cache-mode full --vfs-cache-max-size 10G --vfs-cache-max-age 24h --daemon --vfs-read-chunk-size-limit 150m --buffer-size 100M
ExecStop=/usr/bin/fusermount -qzu #local_path
[Install]
WantedBy=default.target
EOF
开启开机自启。
systemctl enable rclone
到这里,你应该就可以在云服务对应的挂载页面下找到你的 OneDrive 文件夹了。
祝你好运~
#参考
- https://fairysen.com/769.html#toc-head-3
- https://caojiawan.cn/archives/112.html
- https://rclone.org/install/
本篇文章将在近期更新。
将添加更多进阶内容。
Who am i?