Linux上使用Rclone挂载OneDrive或GoogleDrive并设置开机自启[转]
首页 > IT > Unix/Linux   作者:eehello  2023年1月7日 22:11 星期六  浏览:562  字号:   评论:0 条
时间:2023-1-7 22:11   浏览:562  评论:0 条 

转自:https://zhuanlan.zhihu.com/p/355431169

https://www.xiaoz.me/archives/15519

https://www.cnblogs.com/frytea/p/13411497.html


1. 获取Token

在Windows电脑上下载Rclone,下载地址:https://rclone.org/downloads/ ,然后解压,使用cmd进入解压后的文件夹:

rclone.exe authorize "onedrive"


整个大括号就是token,包括大括号。


2. 在Linux上安装Rclone

直接使用官方提供的一键脚本:

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

3. 配置

安装完成后执行:

rclone config
 
n) New remote
s) Set configuration password
q) Quit config
n/s/q> n
name> Rats        #随便填,后面要用到
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 
 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, and Tencent COS   \ "s3"
 5 / Backblaze B2   \ "b2"
 6 / Box   \ "box"
 7 / Cache a remote   \ "cache"
 8 / Citrix Sharefile   \ "sharefile"
 .................
 
Storage> 31      #选择31,Microsoft OneDrive
Microsoft App Client Id - leave blank normally.
client_id>       #留空 
Microsoft App Client Secret - leave blank normally.
client_secret>   #留空
Remote config
Choose OneDrive account type?
 * Say b for a OneDrive business account
 * Say p for a personal OneDrive account
b) Business
p) Personal
b/p> p           #这里选择个人版,你想挂载Business就选择b
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           #选择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:
    rclone authorize "onedrive"
Then paste the result below:
result> {"access_token":""}  #输入之前在客户端授权的内容
--------------------
[Rats]
client_id = 
client_secret = 
token = {"access_token":""}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y        #  选择y

Current remotes:

Name                 Type
====                 ====
Rats                 onedrive

e) Edit existing remote
n) New remote
d) Delete remoter) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> q    #选择q退出


因版本不同,网盘类型序号会经常变动。


4. 安装fuse

#apt install fuse
#yum install fuse

5. 挂载OneDrive

  1. 新建挂载目录
      mkdir /home/public/onedrive
    根据个人喜好选位置

  2. 挂载
    挂载为磁盘,下面的DriveName、Folder、LocalFolder参数根据说明自行替换
    --daemon为守护进程参数

    --umask 000 给予挂载目录完全权限


    rclone mount DriveName:Folder LocalFolder --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000


DriveName: 执行rclone config命令显示的自定义Name

Folder: 在OneDrive网盘下的文件夹名,如果要挂载根目录,可以不要Folder,但是前面的“:”必须保留,否则会报错。

LocalFolder: linux本地的文件夹 ,即为第一步创建的目录


示例命令:
rclone mount Rats:/ /home/public/onedrive  --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000

使用df -h命令查看是否成功。


关于挂载参数的补充

Rclone通过网络挂载方式将云存储挂载到本地机器,既然是通过网络挂载,性能和稳定性自然比不上本地磁盘。另外在使用过程中可能还会发现Rclone占用CPU、内存过高等情况,这个和机器本身性能以及Rclone配置有一定关系。


Rclone挂载依赖于fuse。

这里我已经挂载了OneDrive存储,并将名称命名为Rats,可通过rclone listremotes命令查看到:

$ rclone listremotes
Rats:


Rclone配置文件位于$HOME/.config/rclone/rclone.conf,其中$HOME为用户家目录。

$ ls -l $HOME/.config/rclone/rclone.conf
-rw------- 1 rclone rclone 1876 Dec 27 18:32 /home/rclone/.config/rclone/rclone.conf

Rclone缓存目录位于$HOME/.cache/rclone,如果您服务器挂载了额外的磁盘,建议将这个目录做软连接到非系统盘,避免Rclone使用中占用较多的系统磁盘。

下面直接用自己的挂载命令来做说明:

#一条完整的Rclone挂载命令
rclone mount Rats:/file /data/wwwroot/xxx --allow-other --attr-timeout 5m --vfs-cache-mode full --vfs-cache-max-age 24h --vfs-cache-max-size 10G --vfs-read-chunk-size-limit 100M --buffer-size 100M --daemon


别被上面一串命令吓到,我们来拆分下,发现还是非常简单的:


rclone mount:是rclone挂载命令
Rats:/file:上面已经提到,提前配置好了OneDrive,并将名称命名为Rats,Rats:/file则是OneDrive上的路径
/data/wwwroot/xxx:为本地文件夹路径(建议为空目录)
--allow-other:指的是允许非当前Rclone用户外的用户进行访问
--attr-timeout 5m:文件属性缓存,(大小,修改时间等)的时间。如果小鸡配置比较低,建议适当提高这个值,避免过多的和内核交互,占用资源。
-vfs-cache-mode full:开启VFS文件缓存,这样可减少Rclone与API交互,同时可提高文件读写效率
--vfs-cache-max-age 24h:VFS文件缓存时间,这里设置的24小时,如果文件很少更改,建议设置更长的时间
--vfs-cache-max-size 10G:VFS文件缓存上限大小,建议不超过当前空余磁盘的50%
vfs-read-chunk-size-limit 100M:分块读取大小,这里设置的是100M,可提高文件读的效率,比如1G的文件,大致分为10个块进行读取,但与此同时API请求次数也会增多
--buffer-size 100M:内存缓存,如果您内存比较小,可降低此值,如果内存比较大,可适当提高
--daemon:指后台方式运行


了解了上面参数含义后,便可根据小鸡的配置来适当调整,以免Rclone发生CPU、内存莫名使用过多,而不知所措。更多参数说明,可参考官方文档:https://rclone.org/commands/rclone_mount/


取消挂载
通常情况,直接使用umount命令取消挂载即可:

#/path/to/local/mount为挂载目录
umount /path/to/local/mount


或者使用fusermount

fusermount -u /path/to/local/mount


如果提示磁盘繁忙,只能暴力kill杀掉进程了,命令为:

#kill杀掉进程
pgrep 'rclone'|xargs kill -9

#再次取消挂载
umount /path/to/local/mount


挂载参数小结:

1、比较重要的环境,建议单独创建rclone用户来运行
2、Rclone缓存目录建议设置为非系统分区(/)
3、如果机器配置较低,请降低文件缓存和内存缓存
4、建议添加--allow-other参数,否则可能发生部分程序不可读(无权限)的情况

Rclone可让小鸡秒变大盘鸡,但是也得合理配置参数,让其发挥出最佳性能,切记不要网上盲目复制粘贴参数,否则效果可能并不理想。


6. 开机自启

适用于使用systemctl命令的linux

强调一点,开机自动挂载脚本里面不要加--daemon(后台方式运行)参数。

#将command后面修改成你上面手动运行命令中,除了rclone和--daemon外的全部参数。
#注意mount前面有一个空格

command=" mount onedrive:/ /usr/local/onedrive --allow-other --attr-timeout 5m --vfs-cache-mode full --vfs-cache-max-age 24h --vfs-cache-max-size 5G --vfs-read-chunk-size-limit 100M --buffer-size 100M"

#以下是一整条命令,一起复制到SSH客户端运行

cat > /etc/systemd/system/rclone.service <<EOF
[Unit]
Description=Rclone
After=network-online.target
[Service]
Type=simple
ExecStart=$(command -v rclone) ${command}
Restart=on-abort
User=root
[Install]
WantedBy=default.target
EOF


现在就可以使用systemctl来挂载OneDrive了


# 开机自启
systemctl enable rclone

#关闭开机自启
systemctl disable rclone

#启动
systemctl start rclone

#停止
systemctl stop rclone

#重启
systemctl restart  rclone

#查看状态
systemctl status rclone


7. 复制和同步命令

#本地上传到网盘
rclone [指令名称] [本地路径] [网盘名称:网盘路径] [flags] [flags]


# 网盘下载到本地
rclone [指令名称] [网盘名称:网盘路径] [本地路径] [flags]


# 网盘上传/下载到网盘
rclone [指令名称] [网盘名称:网盘路径] [网盘名称:网盘路径] [flags] [flags]


# 显示速度 -v
# 指令copy sync


常用命令:


rclone config      – 以控制会话的形式添加rclone的配置,配置保存在.rclone.conf文件中。
rclone mount    -将远程文件路径挂载到本地路径。

rclone copy     – 将文件从源复制到目的地址,跳过已复制完成的。

rclone sync     – 将源数据同步到目的地址,只更新目的地址的数据。

rclone move     – 将源数据移动到目的地址。

rclone delete     – 删除路径下所有文件但不删除路径。
rclone purge     – 删除路径及所有文件。
rclone mkdir     – 创建一个新目录。
rclone rmdir     – 删除目录。
rclone check     – 检查源和目的地址数据是否匹配。

rclone ls     – 列出指定路径下所有的文件以及文件大小和路径。

rclone lsd     – 列出指定路径下所有的目录/容器/桶。

rclone lsl     – 列出指定路径下所有文件以及修改时间、文件大小和路径。

rcloen lsf     – 以易于解析的格式列出对象和目录

rcloen lsjson     – 以JSON格式列出对象和目录

rclone md5sum     – 为指定路径下的所有文件产生一个md5sum文件。

rclone sha1sum – 为指定路径下的所有文件产生一个sha1sum文件。

rclone size     – 获取指定路径下,对象的总大小和数量。

rclone version     – 查看当前版本。
rclone cleanup     – 清空remote。

rclone dedupe     – 交互式查找重复文件,进行删除/重命名操作。



 您阅读这篇文章共花了: 
 本文没有标签!
二维码加载中...
本文作者:eehello      文章标题: Linux上使用Rclone挂载OneDrive或GoogleDrive并设置开机自启[转]
本文地址:https://www.eehello.com/?post=321
版权声明:若无注明,本文皆为“点滴记忆---观雨亭”原创,转载请保留文章出处。

返回顶部| 首页| 手气不错| 留言板|后花园

Copyright © 2014-2023 点滴记忆---观雨亭