知识 · 2022年4月20日 0

rclone安装及使用教程

同步海量学习资料(小姐姐)一直是一项巨大的工程。为了上传动辄几个T的学习资料,通常需要连续开机数天甚至数周的时间。耗时耗电不说,onedrive之类的软件还非常不便于文件的管理。例如使用同一台电脑同步移动硬盘里的资源时必须要反复设置。。未来更新和整理都变得很麻烦。

​ 目前找到的最优解决方案就是,在各种机器(树莓派,vps,软路由,电脑等)配置rclone服务。之后就可以非常稳定地同步、下载、挂载网盘资料了。

什么是RCLONE

​ rclone是一款无敌好用的命令行工具。最开始我并不认为命令行工具能够胜任管理文件的任务,然而我很快被打脸了。。简而言之,rclone可以在设备和网盘,设备和设备之间同步、上传、下载数据。且rclone几乎支持所有网盘,包括onedrive, AWS, Googledrive, 阿里云等(显然不包括百度云)。最牛逼的是,全平台通用,且完全免费。

​ 官网地址:点击传送

​ github地址:点击传送

安装Rclone

PS: linux上基本上操作完全相同。windows上安装更加简单

注意!!!:rclone最好安装最新版,否则容易出bug。如果在多个设备上使用rclone,注意版本需要统一,否则极有可能传输错误。

curl -O http://downloads.rclone.org/rclone-current-linux-amd64.zip
wget https://downloads.rclone.org/rclone-current-linux-arm.zip
//自行选择对应版本
unzip rclone-current-linux-amd64.zip
cp rclone /usr/sbin/
chown root:root /usr/sbin/rclone
chmod 0755 /usr/sbin/rclone

也可以使用apt进行安装。但一定要注意版本问题。

sudo apt-get install rclone

apt的安装方法完成安装后检查一下版本。如果发现一些莫名其妙的bug,记得回来查看版本是不是太旧。

rclone --version

添加网盘

使用rclone设置

rclone config

得到设置界面

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设置新网盘、q退出设置、d删除网盘。新建为例,选n

name>      

这里输入的是这个网盘的简称,比如设置为raspberrypi。未来访问rclone lsd raspberrypi:就能看到这个网盘的内容了。完成后:

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 Provider (AWS, Alibaba, Ceph, Digital Ocean, Dreamhost, IBM COS, Minio, Tencent COS, etc)
   \ "s3"
   .........................

选择网盘,输入编号即可,这里以onedrive为例

client_id>   //直接跳过,最后用token就行了
client_secret>   //直接跳过
Edit advanced config? (y/n)
y) Yes
n) No (default)
//选择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 (default)
n) No
y/n>
//这里选择N!!!!!开始自己设置

弹出

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 below:

讲的很清楚了,再开一个命令窗口,输入rclone authorize “onedrive”,浏览器会引导你登录onedrive,完成登陆后会显示成功,关闭网页,命令行中会获取到一段token。大概长这样,复制粘贴到之前的窗口。

{"access_token":"eyJ0eXAiOiJKV1QiLCJub25jZSI6IlRuWW5oWk
中间省略一大堆
9RHhu_rb7nls4nN7rDX2eeXPc8lfAqWSLKhc","expiry":"20:01:41.697430626+08:00"}

接下来随着引导程序自动选择就行了。一切结束后就会成功看到网盘挂在了rclone上。这就成功了。

Current remotes:

Name                 Type
====                 ====
yellrasp             onedrive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config

接着可以使用命令简单看看网盘的情况了。常用的有:

rclone ls   列出指定路径下的所有的文件以及文件大小和路径
rclone lsl  比上面多一个显示上传时间
rclone lsd  列出指定路径下的目录
rclone lsf  列出指定路径下的目录和文件

比如

rclone lsd yellrasp:      //网盘名+:(linux路径相同)

你就能看到网盘第一层目录了

上传下载同步

​ rclone的逻辑和goodsync比较像,和onedrive完全不一样。所以如果只是使用上传下载同步等功能,完全不需要挂载在本地,完全不需要挂载在本地!

操作一:rclone copy复制操作

​ 这算是我最喜欢的功能,没想到这个copy那么方便(见识短浅了…)简单来说完全等同于复制操作。但是可以实现本地和网盘的传输,网盘和网盘的传输。基本操作是

rclone copy path1 path2

​ 例如

rclone copy /home/pi/Desktop/onedrivetest【路径1】 myonedrive:/【路径2】 --transfers 12【同时传输多少文件】 -P

​ 假设rclone上已经挂了网盘1:onedrive1和网盘2:onedrive2,使用这条命令就可以把网盘1的内容复制到网盘2。是不是迁移数据变得简单起来了。

rclone copy onedrive1: onedrive2: --transfers 24 -P   
//网盘内的路径可以随意指派。用rclone lsd onedrive:可以慢慢寻找你想要的路径

​ –transfers的值视具体情况而定。比如树莓派挂载移动硬盘传输,选择3或6比较合适。高性能的vps可以选择24。设备跟不上线程数设太高会崩。

rclone sync同步操作

​ sync和copy基本相同,区别在于copy是复制,不会删除目标路径的内容,sync是同步,会保持目标路径和源路径一致。比较适合于资源的整理。如果只是添加更新资源使用copy即可。

rclone sync path1: path2: --transfer 随意 -P

​ 操作的时候要小心一点,不然目标路径的东西就没了。

rclone check

​ 为了防止误删文件,可以先用check查看不一样的文件。方法相同

rclone check path1: path2:

操作二:速度

​ 一:onedrive在20年把香港的cdn撤了,所以上传就比较随缘了。我的上传速度大概是3MB/S,如果使用海外的vps进行操作,速度甚至可以高达80MB/S,被秀到了讲道理。速度慢真怪不了微软了。你想想隔壁百度盘吧。

​ 二:上传下载速度快慢和服务商有关。比如校园网或者公司网跑满带宽速度一般压力不大的,也就是10MB/S+,但是有的地方就没那么幸运了。比如我在上传三天之后就被封了,速度只剩几百k。。。

​ 三:可以通过在树莓派上配置clash之类的软件,写好onedrive,gdrive的相关的规则。有需要自行搜索吧。

​ 四:【坑】流量最好不要经过软路由。这是一个非常莫名其妙的bug。报dns 443之类的错误优先考虑切换网络试试。目前查到的教程都没成功。

操作三:别忘了用screen

​ ssh操作的时候别忘了使用screen,这样关闭ssh也能让任务继续执行了。

apt-get install screen

​ screen的操作,常用的有

screen rclone copy   //后台执行rclone copy操作
按下 ctl+a+d快捷键    //离开screen终端
screen -ls         //显示在正在运行的终端,detached表示关闭窗口的任务
screen -r [编号]    //回到终端

安装 fuse

挂载前需要安装 fuse,根据自己的系统来选择安装命令:

# Debian/Ubantu
apt-get update && apt-get install -y fuse
# CentOS
yum install -y fuse

操作四:挂载在本地

​ 建议:海外网盘挂载在本地没啥用,除非那啥速度够快。不在乎即时速度的可以考虑,将网盘挂载openwrt,树莓派上就相当于给他们扩容了。可以基于挂载的网盘实现流媒体等功能。

rclone mount rclonedrive1:【网盘】 /home/pi/Desktop/onedrivetest【本地路径】 --copy-links --no-gzip-encoding --no-check-certificate  --allow-non-empty --vfs-cache-mode full【读写权限全开,也可以只开读或者写】 --umask 000

​ 卸载网盘:

fusermount -qzu LocalFolder【本都路径】  //卸载的是本地路径的位置,原理很清楚了 

​ 设置开机自启:

command="   " //复制上文挂载网盘的指令
//先测试是否能够挂载上,挂载之后有没有问题。原理就是开机就执行一遍。

​ 进入root模式

sudo -i  //debian 10

​ 修改文件(这里使用vim,nano之类的随意)

vim /etc/systemd/system/rclone.service
//复制粘贴以下内容
[Unit]
Description=Rclone
After=network-online.target
    [Service]
Type=simple
ExecStart=$(command -v rclone) ${command}
Restart=on-abort
User=root
[Install]
WantedBy=default.target

​ 启动rclone

systemctl start rclone

​ 设置rclone自动启动

systemctl enable rclone

​ 重启,关闭,状态信息

systemctl restart rclone
systemctl stop rclone
systemctl status rclone

onedrive为例,网速给力的话挂载到本地配合plex等播放器看看1080P的视频还是可以的。然而感觉没啥太大必要,毕竟用软件同样可以实现。。

其他rclone命令

参考官方文档:

rclone mkdir              //新建文件夹
rclone size               //获取文件夹大小
rclone move              //类似于剪切操作
rclone delete           //删除
rclone purge              //清空指定路径
rclone rmdir             //删除空目录
rclone md5sum           //为指定路径下的所有文件产生一个md5sum文件
rclone sha1sum          //为指定路径下的所有文件产生一个sha1sum文件
rclone cleanup          //清空网盘,慎重啊
rclone dedupe           // 交互式查找重复文件,方便删除/重命名操作【比较有用】

结尾

​ rclone确实是简单又好用。未来有闲心折腾再整理一下配合流媒体实现在线播放吧。