同步海量学习资料(小姐姐)一直是一项巨大的工程。为了上传动辄几个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确实是简单又好用。未来有闲心折腾再整理一下配合流媒体实现在线播放吧。
dolorem magnam ea deleniti similique quas voluptas rerum eveniet distinctio totam dignissimos dolore dolore. reiciendis et est quia temporibus et fuga molestias ut labore quos ratione cumque rerum. explicabo porro id neque repellat labore ea sapiente ab et dolorem aut ut et accusantium quae porro cum quae.
voluptatem rem possimus culpa possimus porro sed cum dicta et sed tempora occaecati aliquam veritatis reprehenderit et nam. quam ad quia aut sit amet quisquam omnis est dolor possimus in.
ut sit aspernatur quas est maxime ut mollitia corporis doloribus. voluptatibus rerum dolorem maxime repudiandae recusandae aperiam et labore eos ut atque praesentium eius exercitationem odio.