前言

在之前的文章中我们申请了开发者订阅获得了5T的Onedirve空间,那么怎么样让这个网盘被合理的利用起来呢?用Aria2下载资源然后再用脚本将资源上传到rclone挂载的OneDrive中显然是不错的选择。

配置完成后我们就可以将想要下载的资源直接存放在自己的Onedrive上面,无需占用本地磁盘空间,等需要使用的时候我们就可以通过oneindex或者是电脑上的Onedrive将文件取回,而不用担心网上找到的资源分享链接失效了。

对于玩Plex或者Emby的朋友来说这也是下载用来提供刮削的资源的一个好办法。

文章包含完整的rclone挂载配置方法,单纯想将Onedrive挂载到服务器的朋友也可以选择性的忽略搭建Aria2和上传脚本配置的内容。

思路

①申请微软E5开发者订阅获得5T的网盘空间

②用rclone将网盘挂载到服务器上面

③搭建Aria2用以做下载器搭建AriaNg来用图形界面管理下载

④配置上传脚本将Aria2下载到服务器的文件自动上传到Onedrive中。

前期准备

为了实现这个功能,我们需要做下面的前期准备。

1.搭建好Aria2和AriaNg

2.申请开发者订阅获得5T的Onedrive空间

3.搭建Onindex(可选,为了E5订阅能够自动续期最好还是搭建一下。)

前期准备可以参考下面的文章:

搭建Aria2及AriaNg

申请微软开发者E5订阅获得5Onedrive

配置过程

rclone挂载OneDrive到服务器上

在通过前面的教程获取到Onedrive网盘后我们要做的就是将网盘挂载到服务器上,我们使用的挂载工具为rclone。挂载过程如下:

一、下载Windows版本rclone获取token

为了获取Onedrive的token我们需要先下载电脑版本的rclone,下载地址如下:

选择适合自己系统的版本

然后将下载的文件解压出来并重命名为rclone,为保证路径正确程序能够执行,请确保打开rclone文件夹就能看到下面的文件。(下载的文件解压后程序文件可能会在好几个文件夹中)

确保打开rclone文件夹就能看到下面的文件

打开cmd使用cd命令切换到解压好的clone文件目录。(打开cmd的方法Ctrl+R在运行窗口中输入cmd然后回车)

打个比方我将clone下载到D盘那么在cmd中我应该输入下面的命令:

d:   ##进入D盘
cd rclone    ##进入rclone文件夹

然后输入

rclone authorize "onedrive"

不出意外的话会弹出一个浏览器窗口,在窗口中我们登录我们有5T网盘空间的E5账号。

然后回到cmd窗口我们就能看到一串token

Paste the following into your remote machine --->
{"access_token":"xxxx"}  
<---End paste

将token复制下来,要复制{xx}整个内容(包括花括号),保存在记事本中后面需要用到。

二、服务器上安装fuse

在获取完token后我们连接上服务器,并安装fuse后面我们挂载的时候需要用的这个工具。

yum install fuse

三、安装rclone

刚刚在电脑上我们安装的rclone是为了获取Onedrive的token,而现在我们在服务器上安装的rclone就是为了将Onedrive挂载到服务器上了。

curl https://rclone.org/install.sh | sudo bash

四、配置rclone

当rclone在服务器中安装完成后我们便可以开始配置rclone了

rclone config

输入上面的代码后跟着提示配置即可。

1.输入n回车新建挂载
Current remotes:

Name                 Type
====                 ====

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 新建一个新的挂载配置。

2.输入挂载的名字

当看到 name>时输入该挂载的名称这里我们输入onedrive然后回车。

3.选择挂载类型

然后他会列出可供挂载的类型,由于版本不同OneDrive所在的序号也不一样请以实际为准。

1 / 1Fichier
   \ "fichier"
 2 / Alias for an existing remote
   \ "alias"
 3 / Amazon Drive
   \ "amazon cloud drive"
 4 / Amazon S3 Compliant Storage Providers including AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, SeaweedFS, and Tencent COS
   \ "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 / Compress a remote
   \ "compress"
11 / Dropbox
   \ "dropbox"
12 / Encrypt/Decrypt a remote
   \ "crypt"
13 / Enterprise File Fabric
   \ "filefabric"
14 / FTP Connection
   \ "ftp"
15 / Google Cloud Storage (this is not Google Drive)
   \ "google cloud storage"
16 / Google Drive
   \ "drive"
17 / Google Photos
   \ "google photos"
18 / Hadoop distributed file system
   \ "hdfs"
19 / Hubic
   \ "hubic"
20 / In memory object storage system.
   \ "memory"
21 / Jottacloud
   \ "jottacloud"
22 / Koofr
   \ "koofr"
23 / Local Disk
   \ "local"
24 / Mail.ru Cloud
   \ "mailru"
25 / Mega
   \ "mega"
26 / Microsoft Azure Blob Storage
   \ "azureblob"
27 / Microsoft OneDrive
   \ "onedrive"
28 / OpenDrive
   \ "opendrive"
29 / OpenStack Swift (Rackspace Cloud Files, Memset Memstore, OVH)
   \ "swift"
30 / Pcloud
   \ "pcloud"
31 / Put.io
   \ "putio"
32 / QingCloud Object Storage
   \ "qingstor"
33 / SSH/SFTP Connection
   \ "sftp"
34 / Sia Decentralized Cloud
   \ "sia"
35 / Sugarsync
   \ "sugarsync"
36 / Tardigrade Decentralized Cloud Storage
   \ "tardigrade"
37 / Transparently chunk/split large files
   \ "chunker"
38 / Union merges the contents of several upstream fs
   \ "union"
39 / Uptobox
   \ "uptobox"
40 / Webdav
   \ "webdav"
41 / Yandex Disk
   \ "yandex"
42 / Zoho
   \ "zoho"
43 / http Connection
   \ "http"
44 / premiumize.me
   \ "premiumizeme"
45 / seafile
   \ "seafile"

这里我们可以看到Microsoft OneDrive在第27个选项,所以我们在 Storage>后面输入27并回车。

4.跳过client_id和client_secret

由于我们获取了Token所以这里的client_id和client_secret我们并不需要填写。当出现 client_id>

client_secret>的提示的时候直接跳过即可。

5.选择onedrive区域
Choose a number from below, or type in your own value.
 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> 

下一步我们要选择onedrive的区域,由于我们使用的时E5订阅的Onedrive所以选1然后回车即可,使用世纪互联或者其他版本的Onedrive的朋友请按实际情况来配置。

6.跳过advanced配置
Edit advanced config?
y) Yes
n) No (default)
y/n> 

这里默认为跳过所以直接回车即可。

7.设置Atuo config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine

这里输入n然后回车

8.填写获取的token
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"
Then paste the result.
Enter a string value. Press Enter for the default ("").
config_token> 

config_token>后面粘贴我们第一步获取的token然后回车即可。

9.选择Onedrive类型
Option config_type.
Type of connection
Enter a string value. Press Enter for the default ("onedrive").
Choose a number from below, or type in an existing value.
 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> 

由于E5订阅属于OneDrive Business所以我们输入1然后回车

10.验证配置
Found drive "root" of type "business"
URL: https://xxxx-my.sharepoint.com/personal/admin_liulicool_onmicrosoft_com/Documentsy) Yes (default)
n) No
y/n>

一切设置完成后就能读取到你的URL,确定没有问题后输入y回车即可。

11.完成配置

然后他会问你是否OK,当然ok啦我们输入y回车即可。

y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> 
12.退出配置选项

在完成配置后我们就能看到Current remotes:中已经有我们设置好的 name为onedrive的配置了

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

我们输入q回车退出配置选项即可。

五、挂载

在填写完一大堆挂载配置后我们只需要输入命令将Onedrive挂载到服务器上即可。命令如下:

rclone mount onedrive:/ /onedrive --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

这个挂载命令需要特别注意不要直接复制粘贴,里面onedrive:/的onedrive指的是刚刚填写的挂载配置的 name后面的则是你要挂载的OneDrive网盘目录我这里使用 /则为网盘的根目录。后面的 /onedrive是你服务器的目录,你需要在根目录下创建一个叫onedrive的文件夹。在执行命令后你就能在这个文件夹中看到OneDrive中的文件。

打开onedrive文件夹可以看到Onedrive中的文件即为挂载成功

六、设置开机自动挂载

在挂载完成后我们应该去设置一个开机自启,毕竟服务器关机后又要去输入一遍挂载命令还蛮烦的。

下载自动挂载脚本
wget -N --no-check-certificate https://raw.githubusercontent.com/x91270/Centos/master/rcloned
修改自动挂载脚本
vim rcloned
NAME="onedrive"  #rclone name名,及配置时输入的Name
REMOTE='/'  #远程文件夹,OneDrive 网盘里的挂载的一个文件夹
LOCAL='/onedrive'  #挂载地址,VPS本地挂载目录

按照上面的注释来填写即可,我们的rclone配置名为onedrive,所以填onedrive,我想要将网盘中所有文件夹都挂载到服务器上所以远程文件夹目录为根目录/,挂载地址为服务器的某个文件夹,该填写方法会将网盘挂载到服务器根目录下的onedrive文件夹下。

设置挂载脚本开机自动执行

依次执行下面的命令即可

mv rcloned /etc/init.d/rcloned
chmod +x /etc/init.d/rcloned
chkconfig rcloned on
bash /etc/init.d/rcloned start

设置Aria2下载自动上传到Onedrive

在完成Aria2搭建以及挂载Onedrive到服务器上之后我们终于可以来设置下载自动上传了。

修改每次Aira2完成下载后执行的命令

我们想要让Aria2下载完成的资源上传到Onedrive就需要设置Aria2下载完成后执行的脚本,默认脚本为清楚种子文件,我们输入

 nano /root/.aria2c/aria2.conf

打开 aria2的配置文件并找到

# 下载完成后执行的命令 将下面一行中的 clean.sh改为 upload.sh

# 下载完成后执行的命令
on-download-complete=/root/.aria2c/upload.sh

然后保存即可。这样一来每次下载完成后就会执行 upload.sh的上传命令。

修改上传脚本

输入 nano /root/.aria2c/script.conf打开附加功能脚本配置文件进行修改,有中文注释,按照自己的实际情况进行修改。

# 网盘名称(RCLONE 配置时填写的 name)
drive-name=onedrive

这里我们挂载的配置那么写的是onedrive,按照实际填写即可。

重启aria2并测试上传脚本

重启aria2
service aria2 restart
测试上传脚本
/root/.aria2c/upload.sh

显示success即为成功,然后我们去ariaNg下载文件即可,在下载完成后文件就会从服务器上传到Onedrive中,上传成功后aria2下载目录的文件就会消失了。

后记

在刚开始搭建的时候我想过一个问题,既然都已经用rclone将Onedrive目录挂载到服务器上了那我直接将Aria2的下载目录设置为挂载的目录不就完了吗?为什么还要去设置上传脚本呢?

当我实践以后才发现,服务器上和电脑的情况并不一样,服务器的挂载文件夹中可没有释放空间的选项。如果你将下载目录设置为挂载目录那确实可以实现上传,但是你服务器上的空间占用没办法清除。

且不知道是不是微软的限制,直接下载到挂载目录的超过2g的文件就无法上传了,而使用上传脚本就完全没有这种情况。

最后修改:2021 年 12 月 22 日
如果觉得我的文章对你有用,请随意赞赏