当前位置:首页 > 群晖专栏 > 技术教程 > 正文内容

Rclone 安装配置及挂载 OneDrive 和 S3 实例

admin4年前 (2020-07-03)技术教程337

前言

Rclone 是一款支持多网盘协议的云盘同步命令行工具,支持网盘的上传,下载,相互传输等多种功能.还支持 Windows Linux 挂载到本地磁盘.本文将简单介绍在 Linux 下安装和配置 Rclone ,并实践挂载 OneDrive 和 S3 存储协议.

安装配置

安装

curl https://rclone.org/install.sh | sudo bash
# 官网安装脚本
yum -y install fuse
# 安装挂载依赖 fuse

配置

rclone config
# 配置挂载网盘
~/.config/rclone/rclone.conf
# 配置文件所在目录

挂载

rclone mount <网盘名称>:<网盘路径> <本地路径> <参数> --daemon
# 挂载命令
fusermount -qzu <本地路径>
# 卸载挂载

参考命令参数

rclone copy source:path dest:path
# 从源文件拷贝到目的,不会删除目的的文件,会跳过未变更的文件,基于大小和修改时间或MD5值判断是否变更过。
rclone sync source:path dest:path
# 将目的文件夹同步成和原文件夹完成相同,会删除目的文件夹中的其他文件,可以先用 --dry-run 参数运行,查看哪些文件会被删除和变更。
rclone move source:path dest:path
# 移动文件夹,对于少量文件移动到有大量文件的目的,可以使用 --no-traverse 参数加速。
rclone purge remote:pat
# 删除 path 及其中的所有内容。
rclone mkdir remote:path [flags]
# 如果路径不存在,则创建
rclone rmdir remote:path [flags]
# 删除空的存储桶,如果存储桶非空,可以使用 rclone purge
rclone check source:path dest:path [flags]
# 根据文件大小以及 hash 值对源和目的进行校验(md5和sha1),--size-only 只对比大小;--download 下载下来对比;--one-way,根据源端的数据列表对比; --checksum ,进行 size, checksum 校验;默认,进行大小和修改时间校验。
rclone ls remote:path [flags]
# 查看对象大小和路径;lsl,包括修改时间;lsd,列出目录;lsjson,以 json 格式输出。
rclone lsd remote:path [flags]
# 列出路径下的目录或存储桶
rclone delete remote:path [flags]
# 删除 path 下符合条件的对象
rclone size remote:path [flags]
# 查看远端的文件数目和总大小
rclone rcat remote:path [flags]
# 将标准输出复制到远程文件中

挂载实例

OneDrive


OneDrive API 的获取如需要图文教程,可参考以下链接,但请注意仅仅只是参考图片找到相对的位置,具体详细的配置仍需仔细参考本文的各项参数.
https://family.monkui.com:39/?id=144

创建 OneDrive API

  • 访问 Azure 注册

  • 账户类型选择任何组织目录中的帐户和个人 Microsoft 帐户

  • 重定向 URI 为http://localhost

  • 注册跳转登陆后获取应用程序 ID 即Client_ID

  • 证书和密码中添加新客户端密码即Client_secret

  • 设置 API 权限 Files.Read、Files.ReadWrite、Files.Read.All、Files.ReadWrite.All、offline_access、User.Read 权限.

  • 使用 Windows 下载客户端 解压并进入目录,在地址栏输入CMD启动命令提示符,使用以下命令获取 API .

rclone authorize "onedrive" "Client_ID" "Client_secret"
# 获取 Token
# 以下为获取的 Token 示例
{"access_token":"xxxxxxxxxxxxx","expiry":"2020-06-18T11:29:12.482633133+08:00"}

Rclone 配置连接 OneDrive

rclone config
# 配置连接
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
# 选择 n 创建
name> OneDrive
# 添加自定义网盘名称
...
23 / Microsoft OneDrive
   \ "onedrive"
...
Storage> 23
# 列出所有支持的网盘列表,选择 OneDrive 所在的 23 号
client_id> xxxxxxxxxxxxxxxxxxxxx
# 粘贴创建 API 时生成的 Client_ID
client_secret> xxxxxxxxxxxxxxxxxxxxx
# 粘贴创建 API 时生成的 Client_secret
Edit advanced config? (y/n)
y) Yes
n) No (default)
y/n> n
# 选 n 回车
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> n
# 选 n 回车
result> {"access_token":"xxxxxxxxxxx","expiry":"2020-06-18T11:29:12.482633133+08:00"}
# 此处粘贴上文利用创建的 API 使用 Windows rclone 生成的完整 Token
Choose a number from below, or type in an existing value
 1 / OneDrive Personal or Business
   \ "onedrive"
 2 / Root Sharepoint site
   \ "sharepoint"
 3 / Type in driveID
   \ "driveid"
 4 / Type in SiteID
   \ "siteid"
 5 / Search a Sharepoint site
   \ "search"
Your choice> 1
# 选择 OneDrive 类型
Found 1 drives, please select the one you want to use:
0: OneDrive (business) id=xxxxxxxxxxxxxx
Chose drive to use:> 0
# 找到 1 个网盘,选择编号 0
Found drive 'root' of type 'business', URL: https://xxx.sharepoint.com/personal/xxx_xxx_onmicrosoft_com/Documents
Is that okay?
y) Yes (default)
n) No
y/n> y
# 选择 y 确认完成
--------------------
[OneDrive]
type = onedrive
client_id = xxxxxxxxxxxxxxxxxxxxx
client_secret = xxxxxxxxxxxxxxxxxxxxx
token = {"access_token":"xxxxxxxxxxx","expiry":"2020-06-18T11:29:12.482633133+08:00"}
drive_id = xxxxxxx
drive_type = business
--------------------
y) Yes this is OK (default)
e) Edit this remote
d) Delete this remote
y/e/d> 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 退出.

挂载网盘

mkdir /data
# 创建本地挂载目录
rclone mount OneDrive: /data --copy-links --allow-other --allow-non-empty --umask 000 --daemon
# 挂载命令
# 其中 OneDrive: 为挂载网盘根目录
# 其中 OneDrive:/xxx 为挂载网盘子目录.
fusermount -qzu /data
# 卸载挂载

腾讯云 COS / S3


腾讯云 COS 对象存储官方推出的COSFS在部分场景下使用体验不佳,由于 COS 支持标准S3协议,可以使用 Rclone 来挂载.


配置文件

编辑~/.config/rclone/rclone.conf配置文件,添加并修改以下配置参数:

[cos]
# 自定义挂载名称
type = s3
provider = Other
env_auth = false
# 不从环境变量中获取密钥
access_key_id = AKIDXXXXXXXXXXXXXX
# 腾讯云的 secretId
secret_access_key = YYYYYYYYYYYYYYYYYYY
# 腾讯云的 secretKey
endpoint = cos.ap-shanghai.myqcloud.com
# COS 区域域名

挂载

mkdir /cos
# 创建本地挂载目录
rclone mount cos:test-1251668577 /cos --copy-links --allow-other --allow-non-empty --umask 000 --daemon
# 挂载命令
# 其中 cos:test-1251668577 为挂载名为 cos 的对象存储中的 test-1251668577 存储桶 
# 其中 cos:test-1251668577/xxx 为 挂载名为 cos 的对象存储中的 test-1251668577 存储桶的子目录.
fusermount -qzu /cos
# 卸载挂载

参考命令参数

rclone lsd cos:
# 查看地域存储桶
rclone mkdir cos:rclone-test-1251668577
# 创建存储桶rclone-test-1251668577
rclone sync local-folder/ cos:rclone-test-1251668577/storage
# 将本地local-folder下的文件同步到存储桶的/storage目录下,该操作会将/storage下的所有其他文件删除掉
rclone ls cos:rclone-test-1251668577
# 列出rclone-test-1251668577根目录下的文件
rclone copy local-folder/ cos:rclone-test-1251668577/
# 拷贝本地文件或目录到COS上,不会删除目的端的其他文件
rclone copy cos:rclone-test-1251668577 cos:rclone-test-backup-1251668577
# 同一个存储,在服务端使用copy操作拷贝文件
rclone sync local-folder/ cos:rclone-test-1251668577/ --backup-dir cos:rclone-test-backup-1251668577/20191011
# 将本地文件同步到cos,并备份被删除或修改的文件到备份存储桶中
rclone copy --max-age 24h --progress --no-traverse local-folder/ cos:rclone-test-1251668577/
# --max-age 24h过滤出来最近24小时变更过的文件,--progress显示拷贝进度,--no-traverse在从源拷贝少量文件到目的中大量目的文件时,速度会更快
rclone check local-folder/ cos:rclone-test-1251668577/
# --one-way,查看本地文件是否都同步到了目的端,默认校验修改时间和大小
rclone --min-size 500B lsl  cos:rclone-test-1251668577/
# 查看存储桶中500B以上的文件列表
rclone --dry-run --min-size 300B delete cos:rclone-test-1251668577/
# 查看存储桶中500B以上的待删除文件列表
rclone delete oss:oss-test-bucket-1215715707/ --include=/stl-views.gdb
# 删除根目录下的stl-views.gdb文件,如果不带/前缀,则会删除所有stl-views.gdb文件
rclone size cos:rclone-test-1251668577/
# 查看存储桶中对象数目和占用的空间大小
rclone mount cos:rclone-test-1251668577/ rclone-mnt/
# 将cos挂载成一个本地文件系统
rclone ncdu cos:rclone-test-1251668577/
# 一个简易文本形式的文件浏览器,用于存储桶中的文件浏览、文件和文件夹删除等操作
rclone cat cos:rclone-test-1251668577/test.cpp --head 10
# 输出test.cpp的前10个字节
echo "hello world" |rclone rcat cos:rclone-test-1251668577/rcat.txt
# 将标准输出复制到存储桶的rcat.txt文件中,会覆盖目标文件
rclone sync oss:oss-test-bucket-1215715707/  cos:rclone-test-1251668577/ -P
# 同步oss存储桶中的数据到cos存储桶中,-P选项显示进度
rclone check oss:oss-test-bucket-1215715707/  cos:rclone-test-1251668577/ -P
# 进行数据对比校验
rclone md5sum cos:rclone-test-1251668577/
# 为所有文件生成MD5值
rclone tree cos:rclone-test-1251668577/ -C -D
# 显示文本格式的目录树结构,-C选项带颜色显示,-D显示上次修改时间

参考来源


本站提供免费和付费的技术支持.你可以通过留言,邮件,QQ的方式来进行技术交流和免费咨询.同时也可以付费支持的方式获得相关的技术支持,项目部署配置等服务.具体相关详情请点击查看 技术支持页面


扫描二维码推送至手机访问。

版权声明:本文由梦魁网络资源站发布,如需转载请注明出处。

本文链接:https://family.monkui.com:39/?id=141

标签: 技术教程
分享给朋友:

相关文章

完美解决ShadowsocksX-NG-R8订阅失败问题

完美解决ShadowsocksX-NG-R8订阅失败问题

前言之前ShadowsocksX-NG-R8一直无法正常使用订阅功能,最近翻查了下GitHub,找到了完美解决方案.根据GitHub上的大神研究,多半与mac系统ATS机制有关,MACOS 新版本中新增App Transport Secur...

配置 Nginx 和 frps 共存 80/443 端口及泛域名支持教程

配置 Nginx 和 frps 共存 80/443 端口及泛域名支持教程

前言常规情况下frps服务器端会占用80和443端口,为内网设备提供穿透,实现用户可以使用域名无端口访问内网设备.而在已经部署nginx的服务器上,由于nginx已经占用80和443端口,frps的HTTP和HTTPS需另外选择端口,可以通...

docker 部署 zfile 在线文件目录 - 支持本地,对象存储,OneDrive等各种环境.

docker 部署 zfile 在线文件目录 - 支持本地,对象存储,OneDrive等各种环境.

前言两个月前在 V 站看到某大佬开源了一个支持多种平台的在线文件目录程序,直到现在才有时间去尝试安装使用.程序支持的环境非常全面,有阿里云 OSS, FTP, 华为云 OBS, 本地存储, MINIO, OneDrive 国际/家...

Github Action 部署 acme.sh 全自动批量签发多域名证书教程

Github Action 部署 acme.sh 全自动批量签发多域名证书教程

前言在折腾运维技术的这条路上,必不可少的就是管理多服务器和多域名,而同时维护这么多有效期仅三个月的免费泛域名证书无疑是一项繁琐的工作.经过一段时间的学习和研究,最终决定使用 GitHub Action 来全自动签发多域名证书,并设置定时触发...

基于 ESXI 的 ROS + OpenWrt + AdGuard Home 多软路由家庭组网方案

基于 ESXI 的 ROS + OpenWrt + AdGuard Home 多软路由家庭组网方案

前言整个 2020 年一直在更新和优化自己的家庭网络,从Merlin系统转到OpenWrt在转到ROS + OpenWrt双软路由,最终到ROS + 多个 OpenWrt的终极环境.在稳定运行了近半年后,将整套方案在复制到父母家里.借此机会...

分享收集,整合,编写常用和优秀服务的 Dockerfile 仓库 并已构建 docker 镜像直接使用

分享收集,整合,编写常用和优秀服务的 Dockerfile 仓库 并已构建 docker 镜像直接使用

前言作为资深 docker fans 目前所有服务几乎都跑在 docker 容器上,加上自身强迫症,是一个有着 20 年保持系统纯净的洁癖患者.所以这两年非常热衷于 docker 容器化技术的学习.最近甲骨文推出了免费...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。