因为需要搭建聊天服务器,会产生大量的聊天历史文件,于是想到将OneDrive挂载到服务器解决服务器存储不够的问题
本文章将介绍如何使用Rclone挂载Onedrive到Ubuntu服务器
本地操作
在Microsoft Azure完成配置
注册应用
首先打开Microsoft Azure官网(Microsoft Azure)并登录需要使用OneDrive的微软账号
在Azure服务
一栏中选择应用注册
(如果没有找到可点击更多服务
后搜索)
在顶栏中选中新注册
填写注册应用程序所需的内容:
-
名称
:为你的应用程序取个名备忘 -
收支持的账户类型
:选择任何组织目录(任何 Microsoft Entra ID 租户 - 多租户)中的帐户和个人 Microsoft 帐户(例如 Skype、Xbox)
-
重定向URI(可选)
:第一框选择Web
,第二框填入http://localhost
完成后点击注册
完成注册
获取应用程序(客户端) ID和密码值
注册成功后会跳转到应用首页面,需要记录记概要中所示的应用程序(客户端) ID
,之后要用到
然后在边栏中选择证书与密码
然后选择生成客户端密码
添加密码后,记录我们刚刚创建的密码值
,之后要用到
注意:一定要将密码值记录下来,密码值只显示一次
更改权限设置
在边栏中选择API权限
,点击已配置权限
中的条目,将Files
中的权限全部勾选
至此应当记录了应用程序(客户端) ID
和值
获取Token
因我的服务器没有浏览器所以需要在本地先获取token
前往Rclone下载页(Rclone downloads)下载对应本地系统的安装包,这里演示Windows
解压后使用cmd进入文件路径并执行以下命令(将应用程序(客户端) ID
和值
替换为上一步中得到的内容):
rclone.exe authorize "onedrive" "应用程序(客户端) ID" "值"
此时,浏览器将会自动打开,需要在浏览器中完成登录
完成登录后应当返回包含以下内容的一个页面
Success!
All done. Please go back to rclone
此时cmd窗口内应当写出了token(大括号内的所有内容,包括大括号),类似:
{"access_token":"eyJ0eXAiOiJKV1QiLCJub25jZSI6IkZEcDZqYnltczA4TnRyVUx5T1VVRURTeEY3RUVaaXpqWWxxRkt0X1BOUGciLCJhbGciOiJSUzI1NiIsIng1dCI6IkwxS2ZLRklfam5YYndXYzIyeFp4dzFzVUhIMCIsImtpZCI6IkwxS2ZLRklfam5YYndXYzIyeFp4dzFzVUhIMCJ9.eyJhdWQiOiIwMDAwMDAwMy0wMDAwLTAwMDAtYzAwMC0wMDAwMDAwMDAwMDAiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC84MzA3NGY2YS1iMmVlLTRiMzUtYjE5ZS0wNTM1OThjMTVhM2MvIiwiaWF0IjoxNzE2MDI2MjQ0LCJuYmYiOjE3MTYwMjYyNDQsImV4cCI6MTcxNjAzMDUwMSwiYWNjdCI6MCwiYWNyIjoiMSIsImFpbyI6IkFWUUFxLzhXQUFBQXlnYU1uS2NmU2Y3eFhhdWlhcno3Z2FuaU1ObktGakJUbXp4NTNCVE45Smk1eTA1Y0theHVmSzRTcGdDbXhUZVY2bjl6RmJLYUpBREM1Q0xBRGV3amFwaXNTVnoyUHVaQkFOdVdSMkpCQllZPSIsImFtciI6WyJwd2QiLCJtZmEiXSwiYXBwX2Rpc3BsYXluYW1lIjoi5oyC6L295paw54uX5LqRIiwiYXBwaWQiOiI5ODZiOTE4NS1hMTg3LTRlMDQtOThjYi1hZWM0N2ZhNDMzNDgiLCJhcHBpZGFjciI6IjEiLCJmYW1pbHlfbmFtZSI6ImNlIiwiZ2l2ZW5fbmFtZSI6ImJlIiwiaWR0eXAiOiJ1c2VyIiwiaXBhZGRyIjoiMjQwNzpjZGMwOmIwMTA6OjIyMyIsIm5hbWUiOiJiZSBjZSIsIm9pZCI6IjEzNmZjYTQxLTM3ZGQtNGY4Yi04OWI4LTAyNWEyOGYxMWYxNSIsInBsYXRmIjoiMyIsInB1aWQiOiIxMDAzMjAwMzZDQUM3QTMzIiwicmgiOiIwLkFhNEFhazhIZy02eU5VdXhuZ1UxbU1GYVBBTUFBQUFBQUFBQXdBQUFBQUFBQUFDdEFQQS4iLCJzY3AiOiJGaWxlcy5SZWFkIEZpbGVzLlJlYWQuQWxsIEZpbGVzLlJlYWQuV3JpdGUgRmlsZXMuUmVhZFdyaXRlLkFsbCBTaXRlcy5SZWFkLkFsbCBwcm9maWxlIG9wZW5pZCBlbWFpbCIsInN1YiI6IjFKSTE3RzFOQk5nR09oa2NFdXBWUmhuRnd6emV6NXpyeGNYVU1Mb000ZDAiLCJ0ZW5hbnRfcmVnaW9uX3Njb3BlIjoiRVUiLCJ0aWQiOiI4MzA3NGY2YS1iMmVlLTRiMzUtYjE5ZS0wNTM1OThjMTVhM2MiLCJ1bmlxdWVfbmFtZSI6InphbGlzZW50MzIwQG9uZWRyaXZlczV0Yi5vbm1pY3Jvc29mdC5jb20iLCJ1cG4iOiJ6YWxpc2VudDMyMEBvbmVkcml2ZXM1dGIub25taWNyb3NvZnQuY29tIiwidXRpIjoiOXI5U3lxVjhRMEtxb0NBRGFlaTZBQSIsInZlciI6IjEuMCIsIndpZHMiOlsiYjc5ZmJmNGQtM2VmOS00Njg5LTgxNDMtNzZiMTk0ZTg1NTA5Il0sInhtc19zdCI6eyJzdWIiOiJfdkN5ZFc1OEdDN3ZnaGNsc0JzZXRMTC1fS1djX0h6QTJLRVhBT2M5TFVRIiwieG1zX3RjZHQiOjE3MTExMzc1Njl9LlUtc3VNRmxOcXlvOVZSUFExR1dQY082aUptMkV2dEN3RmZDb1lLRy1sb1hkTm53aDVZakFQOEwwVzVrSHY0bmd0dmt3LWRZRms0c0swbHpmSHhtZkFhUVc4Y3NzQ3FIaHNHUnV2V0M5WnpNZC1QSHFPaEl5Ml93dGgwZE5KYmlmQXJnUUtiQk1IZG52WHlUNGVtQkJpang5MzdCeEd0RHFDRjF1SnJaNXBESlNnaG55QXdVdW5taW9UWjVha0xkOXV4NU1oTWFpaXlfNTZYZDFiLUJYeWNrSU4wal9LaXI3c29pbXVBX2JudlJjRlh0R3hidWpkRDJEX3ZmbnBoUFlRVlNLY2loc1NxTEYxSmpmQzZWN2MzdG1vb1o1UGxjUC1rbTlyajBVRkNSZyIsInRva2VuX3R5cGUiOiJCZWFyZXIiLCJyZWZyZXNoX3Rva2VuIjoiMC5BYTRBaWs4SGctNnlOVXhuZ1UxTU1GYVBJV1JhNWlIb1FST21NdXV4SC1rTTBpdEFQLkFnQUJBd0VBU25SWUIxU1ZqLUhnZDhBZ0RzX3dVdE9aXzNQckdmZWNlcF9JWXZsRko4bkZQU09pM1FsWjc3QUI4U3hwLVF5N0dnbWUyS1NvNWdrZGdGVW44TVlTdS1oakhBQVNBQmFpd3ZBRmhlOU5Kem1PbzQ5ajQ0TXZVMU1Mcy0zQldXNk1PR19ZZWc4T0NxNGZSa2tzUXplQUo5Vnp3bDFsWjk5Z0xOYUFeUlR1SUVhcjZhN2hDN1h0S056Y2hXNW8zZXVXcGZHYXItamF4Q0JfM21xRWZTb2I5QmpVS1ZVaTVibDFhbnRvVGZHY0E3UWRpa1V4YmN0WW01d3JvTUp6ODFhTUZsZ3pSeFROLVJZVVBXWXlaeUpCX2M5N203Ynpob3QyNFUtdGZfdEpOc1E3MHdoUFd5SlBXSFJ4ZVNHZG1NT3NDUUZvVlp1RTBCeGFQdHp6OHZtNXlyMi1naE9hcjBfNVRLMnpHYl9HQ3NaLU5oR1o3S1BBTXlvM0VUTzBxNm9kdGFiMDAyazQ3MDN4UGROZkY5TUJFcTlPcGo3Vk42eU5RakZRdVNMVkkzSFZQTDIyQ0xwQmR0a2Q1QQ","expiry":"2024-05-18T19:08:19.1425024+08:00"}
服务器端操作
安装和设置Rclone
分行执行下列指令
apt update
apt install curl && apt install fuse3
curl https://rclone.org/install.sh | sudo bash
安装可能需要花费很久(我花了几十分钟)安装时可能没有提示,需要耐心等待
安装成功后执行以下指令打开Rclone的设置
rclone config
然后按照下列内容完成设置
No remotes found, make a new one?
n) New remote
s) Set configuration password
q) Quit config
n/s/q>
新建remotes
n
Enter name for new remote.
name>
此处输入挂载后磁盘的名称,以onedrive
为例
onedrive
Option Storage.
Type of storage to configure.
Choose a number from below, or type in your own value.
1 / 1Fichier
\ (fichier)
2 / Akamai NetStorage
\ (netstorage)
3 / Alias for an existing remote
\ (alias)
4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, ArvanCloud, Ceph, ChinaMobile, Cloudflare, DigitalOcean, Dreamhost, GCS, HuaweiOBS, IBMCOS, IDrive, IONOS, LyveCloud, Leviia, Liara, Linode, Minio, Netease, Petabox, RackCorp, Rclone, Scaleway, SeaweedFS, StackPath, Storj, Synology, TencentCOS, Wasabi, Qiniu and others
\ (s3)
5 / Backblaze B2
\ (b2)
6 / Better checksums for other remotes
\ (hasher)
7 / Box
\ (box)
8 / Cache a remote
\ (cache)
9 / Citrix Sharefile
\ (sharefile)
10 / Combine several remotes into one
\ (combine)
11 / Compress a remote
\ (compress)
12 / Dropbox
\ (dropbox)
13 / Encrypt/Decrypt a remote
\ (crypt)
14 / Enterprise File Fabric
\ (filefabric)
15 / FTP
\ (ftp)
16 / Google Cloud Storage (this is not Google Drive)
\ (google cloud storage)
17 / Google Drive
\ (drive)
18 / Google Photos
\ (google photos)
19 / HTTP
\ (http)
20 / Hadoop distributed file system
\ (hdfs)
21 / HiDrive
\ (hidrive)
22 / ImageKit.io
\ (imagekit)
23 / In memory object storage system.
\ (memory)
24 / Internet Archive
\ (internetarchive)
25 / Jottacloud
\ (jottacloud)
26 / Koofr, Digi Storage and other Koofr-compatible storage providers
\ (koofr)
27 / Linkbox
\ (linkbox)
28 / Local Disk
\ (local)
29 / Mail.ru Cloud
\ (mailru)
30 / Mega
\ (mega)
31 / Microsoft Azure Blob Storage
\ (azureblob)
32 / Microsoft Azure Files
\ (azurefiles)
33 / Microsoft OneDrive
\ (onedrive)
34 / OpenDrive
\ (opendrive)
35 / OpenStack Swift (Rackspace Cloud Files, Blomp Cloud Storage, Memset Memstore, OVH)
\ (swift)
36 / Oracle Cloud Infrastructure Object Storage
\ (oracleobjectstorage)
37 / Pcloud
\ (pcloud)
38 / PikPak
\ (pikpak)
39 / Proton Drive
\ (protondrive)
40 / Put.io
\ (putio)
41 / QingCloud Object Storage
\ (qingstor)
42 / Quatrix by Maytech
\ (quatrix)
43 / SMB / CIFS
\ (smb)
44 / SSH/SFTP
\ (sftp)
45 / Sia Decentralized Cloud
\ (sia)
46 / Storj Decentralized Cloud Storage
\ (storj)
47 / Sugarsync
\ (sugarsync)
48 / Transparently chunk/split large files
\ (chunker)
49 / Union merges the contents of several upstream fs
\ (union)
50 / Uptobox
\ (uptobox)
51 / WebDAV
\ (webdav)
52 / Yandex Disk
\ (yandex)
53 / Zoho
\ (zoho)
54 / premiumize.me
\ (premiumizeme)
55 / seafile
\ (seafile)
Storage>
找对应OneDrive的序号,这个序号可能会随着版本更新变动,需要注意,这里以33为例
33
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>
填入你的值
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)
region>
选择网盘的区域类型,国内一般是1
,这里以1
为例
1
Edit advanced config?
y) Yes
n) No (default)
y/n>
不进行高级配置
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
y/n>
不进行自动配置
n
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” “eyJjbGllbnRfaWQiOiI5ODZiOTE4NS1hMTg3LTRlWh1dHNZNTkxLnhsYjVkVWEtQSIsImRlc2NyaXB0aW9uIjoiIn0”
Then paste the result.
Enter a value.
config_token>
输入你在上述步骤中获取的token(大括号及大括号中的所有内容)
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
1
Drive OK?
Found drive “root” of type “business”
URL: https://onedfdfghfdhfdrosoft\_com/Documents
y) Yes (default)
n) No
y/n>
检查无误输入y
确认
y
检查无误再次输入y
确认
y
Current remotes:
Name Type
==== ====
onedrive onedrive
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>
完成编辑输入q
退出
q
配置自启动脚本
执行以下指令下载自启动脚本
wget -N git.io/rcloned
打开rcloned配置文件并按照文件内备注提示修改
保存并关闭文件
执行以下命令设置开机自启动
mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
update-rc.d -f rcloned defaults
bash /etc/init.d/rcloned start
应当看到以下内容,证明设置完成
[信息] rclone 启动成功 !
至此挂载全部完成
备用管理指令
开始挂载:
bash /etc/init.d/rcloned start
停止挂载:
bash /etc/init.d/rcloned stop
重新挂载:
bash /etc/init.d/rcloned restart
查看日志:
tail -f /$HOME/.rclone/rcloned.log
停止自启动挂载:
bash /etc/init.d/rcloned stop
update-rc.d -f rcloned remove
rm -f /etc/init.d/rcloned