使用 rclone将onedriver 挂载可道云网盘

Rclone是一个非常牛逼的软件,可以挂载OneDrive/Google Drive/Amazon Drive等云存储,同时还支持全平台,意味着您可以在Windows、Mac OS、Linux上进行使用。这篇文章主要分享CentOS使用Rclone挂载OneDrive的过程,其它系统或者挂载其它网盘原理和方法大致相同。

前提说明

服务器上CentOS大部分未安装图形界面,但是Rclone必须要在有内置浏览器的电脑才能正常完成授权,因此这里使用的办法是先在本地Windows电脑安装Rclone并获取授权后的token,再将其复制到CentOS的服务器上。

Windows 安装Rclone

下载后将其解压,并将rclone.exe移动到C:\Windows\System32这个目录,这样就可以使用rclone命令了,如下截图。

在cmd窗口继续输入命令rclone config进行配置,输入n新建一个远程,并取一个名字,比如onedrive

继续下一步,选择需要挂载的云存储,Onedrvie是16,随着版本的变化可能会改变,自己灵活变通即可。

client_id/client_secret直接留空并回车,然后选择OneDrive版本,教育版或商业版请选择b,个人版选择p

浏览器会自动打开http://localhost:53682/ 并进行授权,如果授权成功会返回token,请务必将token记录并保存后面还要使用。

CentOS安装Rclone

直接使用官方的一键安装命令即可,输入下面的命令:

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

CentOS挂载Onedrive

接下来操作方法和windows完全一样,就不重复了,唯一的区别是“Use auto config?”这里选择n,并输入之前获取的token

继续输入命令进行挂载

#安装fuse
yum -y install fuse
#创建挂载目录
mkdir -p /home/onedrive
#挂载
rclone mount remote:path/to/files /home/onedrive
#如果需要后台保持运行,使用下面的命令
nohup rclone mount remote:path/to/files /home/onedrive &
#####必须挂载到可道云安装目录下的文件夹:
mount onedriver5t:/  /www/wwwroot/yunpan.caojiawan.cn/data/User/admin/home/onedriver5t --allow-other  --daemon --allow-non-empty

解释下上面的参数:

  • remote:远程名,之前我们设置的是onedrive
  • path/to/files:远程文件路径(也就是Onedrive路径),可设置为/,注意不可有空格,我就在这里卡了一会。
  • /home/onedrive:本地磁盘路径
  • 如果不挂载到可道云目录下,就访问不到。

不出问题的情况下,输入df -h就可以看到Onedrive成功挂载。

总结

Rclone支持挂载20多种网盘,不过大多数网盘都是国外的,在国外VPS上使用效果更佳,用来备份数据这些还是挺不错的。

Microsoft OneDrive

路径指定为 remote:path

路径可以根据需要深入,例如remote:directory/subdirectory

OneDrive的初始设置涉及从Microsoft获取您需要在浏览器中执行的令牌。 rclone config引导你完成它。

这是一个如何制作远程调用的示例remote。第一次运行:

 rclone config

这将指导您完成交互式设置过程:

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
name> 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
...
17 / Microsoft OneDrive
   \ "onedrive"
...
Storage> 17
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
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
Found 1 drives, please select the one you want to use:
0: OneDrive (business) id=b!Eqwertyuiopasdfghjklzxcvbnm-7mnbvcxzlkjhgfdsapoiuytrewqk
Chose drive to use:> 0
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

有关如何在没有Internet浏览器的计算机上进行设置,请参阅远程设置文档

请注意,rclone在本地计算机上运行Web服务器以收集从Microsoft返回的令牌。这仅从打开浏览器的那一刻开始,直到您返回验证码的那一刻。这是http://127.0.0.1:53682/,这可能需要你,如果你正在运行的主机防火墙暂时解锁。

配置完成后,您可以rclone像这样使用,

列出OneDrive顶级目录

rclone lsd remote:

列出OneDrive中的所有文件

rclone ls remote:

将本地目录复制到名为backup的OneDrive目录

rclone copy /home/source remote:backup

获取您自己的客户端ID和密钥

在默认情况下执行请求时,rclone使用所有rclone用户共享的一对客户端ID和密钥。如果您遇到问题(例如,看到很多限制),您可以按照以下步骤获取自己的客户ID和密钥:

  1. 打开https://apps.dev.microsoft.com/#/appList,然后单击Add an appConverged applications如果适用则选择)
  2. 输入应用的名称,然后点击“继续”。复制并保留Application Id应用名称下方以供日后使用。
  3. 在部分下Application Secrets,单击Generate New Password。复制并保留该密码以供日后使用。
  4. 在部分下Platforms,单击Add platform,然后Web。输入http://localhost:53682/在 Redirect URLs
  5. 根据部分Microsoft Graph PermissionsAdd这些delegated permissionsFiles.ReadFiles.ReadWriteFiles.Read.AllFiles.ReadWrite.Alloffline_accessUser.Read
  6. 滚动到底部并单击Save

现在申请已经完成。运行rclone config以创建或编辑OneDrive远程。分别提供应用程序ID和密码作为客户端ID和密钥。rclone将引导您完成剩下的步骤。

修改时间和哈希值

OneDrive允许在精确到1秒的对象上设置修改时间。这些将用于检测对象是否需要同步。

OneDrive个人支持SHA1类型哈希。OneDrive for Business和Sharepoint Server支持 QuickXorHash

对于所有类型的OneDrive,您可以使用该--checksum标志。

删除文件

您使用rclone删除的任何文件都将以垃圾邮件结尾。Microsoft不提供永久删除文件的API,也不提供清空垃圾箱的API,因此您必须使用Microsoft的某个应用程序或通过OneDrive网站执行此操作。

标准选项

以下是onedrive(Microsoft OneDrive)特有的标准选项。

–onedrive-客户端ID

Microsoft App Client ID正常保留空白。

  • 配置:client_id
  • 环境变量:RCLONE_ONEDRIVE_CLIENT_ID
  • 输入:string
  • 默认值:“”

–onedrive客户端秘密

Microsoft App Client Secret正常保留空白。

  • 配置:client_secret
  • 环境变量:RCLONE_ONEDRIVE_CLIENT_SECRET
  • 输入:string
  • 默认值:“”

高级选项

以下是onedrive(Microsoft OneDrive)特有的高级选项。

–onedrive的块大小

使用上传文件的块大小必须是320k的倍数。

超过这个大小的文件将被分块 – 必须是320k的倍数。请注意,块将被缓冲到内存中。

  • 配置:chunk_size
  • 环境变量:RCLONE_ONEDRIVE_CHUNK_SIZE
  • 类型:SizeSuffix
  • 默认值:10M

–onedrive驱动-ID

要使用的驱动器的ID

  • 配置:drive_id
  • 环境变量:RCLONE_ONEDRIVE_DRIVE_ID
  • 输入:string
  • 默认值:“”

–onedrive驱动型

驱动器的类型(个人| business | documentLibrary)

  • 配置:drive_type
  • 环境变量:RCLONE_ONEDRIVE_DRIVE_TYPE
  • 输入:string
  • 默认值:“”

–onedrive展露-的OneNote档案

设置为使OneNote文件显示在目录列表中。

默认情况下,rclone会将OneNote文件隐藏在目录列表中,因为“打开”和“更新”等操作对它们无效。但是这种行为也可能会阻止您删除它们。如果要删除OneNote文件或希望它们显示在目录列表中,请设置此选项。

  • 配置:expose_onenote_files
  • 环境变量:RCLONE_ONEDRIVE_EXPOSE_ONENOTE_FILES
  • 输入:bool
  • 默认值:false

限制

请注意,OneDrive不区分大小写,因此您不能拥有名为“Hello.doc”的文件和名为“hello.doc”的文件。

有很多字符不能在OneDrive文件名中。这些在Windows平台上不会发生,但在非Windows平台上它们很常见。Rclone将这些名称映射到相同的unicode等效名称。例如,如果文件中包含一个文件? ,则会将其映射到

OneDrive for Business允许的最大文件大小为15GB,OneDrive Personal允许的最大文件大小为35GB(2019年1月4日更新)。

对于OneDrive,OneDrive for Business和SharePoint Online,整个路径(包括文件名)必须包含少于400个字符。如果使用rclone加密文件和文件夹名称,则可能需要注意此限制,因为加密的名称通常比原始名称长。

OneDrive似乎可以在一个文件夹中至少有50,000个文件,但是100,000 rclone将会出现列出目录的错误couldn’t list files: UnknownError:。有关详细信息,请参阅 #2707

有关不同类型OneDrive限制的官方文档可在此处找到。

版本问题

OneDrive中的每个更改都会导致服务创建新版本。这会计入用户配额。例如,更改文件的修改时间会创建第二个版本,因此文件使用两倍的空间。

copy是唯一受此影响的rclone命令,因为我们复制文件然后设置修改时间以匹配源文件。

注意:从2018年10月开始,用户将无法再默认禁用版本控制。这是因为Microsoft已对该机制进行了更新。要更改此新的默认设置,SharePoint管理员需要运行PowerShell命令。如果您是管理员,则可以在PowerShell中运行这些命令以更改该设置:

  1. Install-Module -Name Microsoft.Online.SharePoint.PowerShell (如果你还没有安装这个)
  2. Import-Module Microsoft.Online.SharePoint.PowerShell -DisableNameChecking
  3. Connect-SPOService -Url https://YOURSITE-admin.sharepoint.com -Credential YOU@YOURSITE.COM(替换YOURSITEYOUYOURSITE.COM与实际值,这将提示输入您的凭据)
  4. Set-SPOTenant -EnableMinimumVersionRequirement $False
  5. Disconnect-SPOService (断开与服务器的连接)

以下是普通用户禁用版本控制的步骤。如果未看到“无版本控制”选项,请确保满足上述要求。

用户Weropol找到了一种在OneDrive上禁用版本控制的方法

  1. 单击OneDrive Business页面顶部的齿轮符号打开设置菜单。
  2. 单击站点设置。
  3. 进入“站点设置”页面后,导航到“站点管理”>“站点库和列表”。
  4. 单击“自定义”“文档”。
  5. 单击常规设置>版本控制设置。
  6. 在文档版本历史记录下,选择无版本控制选项。注意:这将禁用新文件版本的创建,但不会删除任何以前的版本。您的文件是安全的。
  7. 单击“确定”应用更改。
  8. 使用rclone上传或修改文件。(我也使用–no-update-modtime标志)
  9. 使用rclone后恢复版本控制设置。(可选的)

故障排除

Error: access_denied
Code: AADSTS65005
Description: Using application 'rclone' is currently not supported for your organization [YOUR_ORGANIZATION] because it is in an unmanaged state. An administrator needs to claim ownership of the company by DNS validation of [YOUR_ORGANIZATION] before the application rclone can be provisioned.

这意味着rclone无法将OneDrive for Business API与您的帐户一起使用。你不能做太多,也许写一封电子邮件给你的管理员。

但是,还有其他方式可以与OneDrive帐户进行交互。看一下webdav后端:https//rclone.org/webdav/#sharepoint


Notice: Trying to get property of non-object in /home/wwwroot/www.tthui88.com/wp-includes/comment-template.php on line 677

Notice: Trying to get property of non-object in /home/wwwroot/www.tthui88.com/wp-includes/comment-template.php on line 28

Notice: Trying to get property of non-object in /home/wwwroot/www.tthui88.com/wp-includes/comment-template.php on line 48
匿名进行回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注