封面:贝蒂(Pixiv ID:58416341)
掐指一算发现二月都快结束了,想想自己都已经月更了还断更就太丢脸了,不想断更无奈之下把最近折腾过的 rclone 挂载整理一下,其实大部分过程都是跟着网上的教程来的。
那么我们现在开始。
准备:
- 安装好 rclone,包括本机和需要挂载的机器;
- 可以正常使用的 OneDrive 网盘;
- 网络通畅。
由于之前挂载的时候没有截图,考虑到删掉再挂载会带来不必要的麻烦,整理的内容就不配图了,尽量用代码来复现一下,后期可能会考虑补图。
安装过程请参考官网,不再赘述。
获取 Token
这一步需要在可以进行网页交互(打开浏览器)的机子上进行,我需要挂载的环境是 CentOS 的 VPS,并没有安装桌面环境,所以在本机上完成。
rclone config
执行命令进入 rclone 配置:
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> n
输入 n
并回车,表示进入 New remote
配置向导。
当然,如果是首次运行,会提示配置文件不存在,此时只有 n/s/q
三个选项,同样选择 n
。
name> remote
向导首先询问你对这个 remote 的命名。输入你希望的命名即可,这里使用 remote
举例。
Type of storage to configure.
Enter a string value. Press Enter for the default ("").
Choose a number from below, or type in your own value
[snip]
XX / Microsoft OneDrive
\ "onedrive"
[snip]
Storage> onedrive
下一步需要设置储存的类型,可以找到 Microsoft OneDrive 对应的数字序号(因版本而异)或直接键入 onedrive
。
回车进行下一步配置。
Microsoft App Client Id
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_id>
Microsoft App Client Secret
Leave blank normally.
Enter a string value. Press Enter for the default ("").
client_secret>
Edit advanced config? (y/n)
y) Yes
n) No
y/n> n
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> y
全部采用默认配置,无脑四次回车即可。
第一次是询问 Client Id,这个东西不是必要的,留空即可。
第二次是询问 Client Secret,同理。
第三次询问是否更改高级配置,一般不用更改,键入 n
或直接回车均可。
第四次询问是否自动获取 Token,这一步就是来干这个的,键入 y
或直接回车均可。
此时你的浏览器应该会打开,然后转到授权页面,登录你的账户完成授权即可。如果浏览器没有自动打开,注意看输出中的这些内容:
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
手动打开里面的网址,即可转到授权页面。
Got code
Choose a number from below, or type in an existing value
1 / OneDrive Personal or Business
\ "onedrive"
2 / Sharepoint site
\ "sharepoint"
3 / Type in driveID
\ "driveid"
4 / Type in SiteID
\ "siteid"
5 / Search a Sharepoint site
\ "search"
Your choice> 1
成功获取 code,然后我们需要选择储存类型,这里选择 onedrive
,输入 1
或直接键入 onedrive
均可。
Found 1 drives, please select the one you want to use:
0: OneDrive (business) id=b!Eqwertyuiopasdfghjklzxcvbnm-7mnbvcxzlkjhgfdsapoiuytrewqk
Chose drive to use:> 0
rclone 将自动获取 drives,一般只有一个,选择一个作为 remote,键入希望选择的那一个 drive 前面的编号即可。
Found drive 'root' of type 'business', URL: https://org-my.sharepoint.com/personal/you/Documents
Is that okay?
y) Yes
n) No
y/n> y
--------------------
[remote]
type = onedrive
token = {"access_token":"youraccesstoken","token_type":"Bearer","refresh_token":"yourrefreshtoken","expiry":"2018-08-26T22:39:52.486512262+08:00"}
drive_id = b!Eqwertyuiopasdfghjklzxcvbnm-7mnbvcxzlkjhgfdsapoiuytrewqk
drive_type = business
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y
确认后获取到 Token。注意,需要复制的是整个大括号里面的内容(包括大括号),那就是我们拿到的 Token。
如果在控制台直接复制比较麻烦,也可以保存后从配置文件中复制。
在目标机器上配置
同样执行:
rclone config
步骤与在本机时类似,但是当询问是否自动获取 Token 时,回答 n
并将前面的 Token 粘贴入。
Remote config
Use auto config?
* Say Y if not sure
* Say N if you are working on a remote or headless machine
y) Yes
n) No
y/n> n
For this to work, you will need rclone available on a machine that has a web browser available.
Execute the following on your machine (same rclone version recommended) :
rclone authorize "onedrive"
Then paste the result below:
result> {"access_token":"youraccesstoken","token_type":"Bearer","refresh_token":"yourrefreshtoken","expiry":"2018-08-26T22:39:52.486512262+08:00"}
之后过程相同,成功保存后即完成配置。
rclone mount
详细参考:rclone mount。
rclone mount remote:path /path/to/mountpoint [flags]
其中参数的含义:
remote
:你希望挂载的 remote 的名称;path
:远程挂载目录,填入/
是根目录,也可以指定子目录;/path/to/mountpoint
:挂载点路径,预先建好这个目录;[flags]
:用于控制挂载行为的可选参数,可以不填。
测试:
$ mkdir /mnt/onedrive
$ rclone mount remote:/ /mnt/onedrive
跑起来之后终端上将没有什么反应,在 /mnt/onedrive
目录下新建文件,稍后可以看见自动同步到了 OneDrive。
作为服务启动
在 /usr/lib/systemd/system
目录下新建一个以 .service
结尾的文件,作为服务配置文件。例如 rc-onedrive.service
。
[Unit]
Description=rclone mount onedrive
After=network.target remote-fs.target nss-lookup.target
[Service]
User=root
Type=notify
PIDFile=/run/rc-onedrive.pid
ExecStart=/usr/bin/rclone mount remote:/ /mnt/onedrive --allow-other --allow-non-empty
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Restart=on-abort
[Install]
WantedBy=multi-user.target
然后运行:
$ systemctl enable rc-onedrive
$ systemctl start rc-onedrive
即可开机自启,并通过服务管理 rclone 挂载。
详细的参数说明这里先不写(困[heimu]鸽[/heimu]了),以后补上。(会补的会补的一定不鸽)
那么我们的整个过程就告一段落了,之后要干什么就请随意咯~
参考:
版权声明:本文是原创文章,版权归 无限UCW 所有。
本文链接:https://ucw.moe/archives/centos-rclone-mount-onedrive.html
本站所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由地转载和修改,但请务必注明文章来源并且不可用于商业目的。
巨佬又开始水了
苣佬也玩onedrive啦~