写在前面
linux上对于网盘同步的这个功能,相应的平台支持一直都比不上windows。因为即便Linux在服务器领域有着夸张的市场占有率,但在桌面端,windows依旧是王者级别。
之前使用了一段时间的Ubuntu24.04LTS桌面端,由于写项目时,总是有数据备份焦虑。除了偶尔手动局域网内通过samba备份文件夹内容到网关上的HDD,总想着在某个网盘再备份一份。
经过了一段时间的探索,总结出以下几个网盘:
不支持文件夹同步的网盘
百度网盘
不得不说,百度网盘的linux客户端还是很简约的,少去了windows上的弹窗广告、开机自启动的agent…但同样也少去了windows上的文件夹同步功能。这就很难受。
夸克网盘
官网并没有对Linux平台的客户端,就更不用说文件同步功能了。
在国内使用不方便的网盘
GoogleDrive
谷歌的云端硬盘在windows上的使用体验简直是绝佳的,个人感觉是除了windows原生支持的onedrive之外,最好的网盘。但因为众所周知的原因,使用会有一些门槛。
并且在linux上也和Gnome桌面进行了集成。
优点:
- 生态成熟,能够和谷歌相册、workspace深度集成
- 支持的其他平台多,openai、notion等多个平台都能够导入googledrive的文件进行操作
- 在各个操作系统上,功能都比较完善
- 免费15G能够满足日常的文档、代码同步
缺点:
- 国内使用需要魔法
DropBox
这个网盘的体验是很不错的,Android、Linux、windows、IOS、MAC几乎全平台都支持同步功能,及其强大。虽说Linux上有一些小BUG,但是并不影响正常使用。
缺点:
免费空间只有2G,要想满足日常使用,价格上还是有些贵的。
同GoogleDrive,正常使用需要一定门槛
OneDrive
onedrive和windows深度集成,相信大部分人就算没使用过也听说过它 。但有一点我至今都不是很明白:
onedrive的网页版为什么无法使用,但是桌面端只要登录上去之后,却能够很丝滑地同步呢?这样做的原因又是什么?这就很奇怪
onedrive在linux上的客户端为命令行形式,让人感到很难受的是,有点搞不懂命令行的一些参数,按照默认设置挂载的话,它会把你网盘的所有东西全下载到本地,而不是像windows上只在本地保留一个索引或者缩略图,需要用到时再进行下载。
折腾了半天也没搞明白有些参数的含义,所以放弃了。
对象存储
国内的云服务商比如阿里、腾讯、七牛提供的OOS服务大多都是流量计费的,但是毕竟这么做对于个人来说充满了不确定性。
万一哪天被人刷了流量,可就得不偿失了。
所以排除国内的云服务商,发现赛博活佛cloudflare提供的R2对象存储服务很不错。
免费额度:
- 存储空间:每月10GB
- A类操作:每月100万次
- B类操作:每月1000万次
A操作通俗一点指的是对存储桶的写操作,而B操作就是读;并且完美兼容亚马逊的s3对象存储。
这对我这种开始学习写博客的个人玩家可是非常友好,顺带也将图床一步步从vps上的lsky搬到github,再搬到cloudflare。关于图床的解决方案等以后有时间再分享。这次主要还是探讨一下这些云端存储服务在Linux上的一些操作。
rclone是什么?
通俗一点来说,只要它支持的网盘,都能够挂载到本地,并且能够控制是下载至本地缓存,或者仅仅本地保留索引。并且能够通过Linux的cron定时任务将需要进行同步的文件夹定时同步,完美满足我的需求。下面有请perplexity.ai选手发言:
Rclone是一个功能强大、开源、使用go语言开发的命令行工具,主要用于云存储管理和数据传输。以下是它的主要特点:
核心功能
- 管理云存储上的文件
- 在不同云存储服务之间同步和传输数据
- 支持超过40种云存储产品,包括S3对象存储、商业和消费者文件存储服务
- 提供类似unix命令的操作,如rsync、cp、mv、mount等
主要用途
- 将文件备份(和加密)到云存储
- 从云存储还原(和解密)文件
- 在不同云服务之间镜像数据
- 在云存储供应商之间迁移数据
- 将云存储挂载为本地磁盘
技术特点
保留文件时间戳
自动验证校验和
支持断点续传
支持服务器端传输
提供加密、压缩、分块等功能
支持Windows、macOS、Linux和FreeBSD系统
1
使用场景
- 文件传输和备份
- 多云存储服务管理
- 数据同步和迁移
- 云存储系统挂载
rclone使用方式
安装
终端直接安装就OK
sudo apt install |
配置
配置是比较麻烦的一点,在安装好之后,进行交互配置
rclone config |
第一次使用需要new一个remote,输入n,紧接着会让你输入一个名称,起一个好记的名字就行。
然后,会让你选择一个具体云端存储产品,输入对应产品的序号回车即可
接下来的操作会有所不同,不过大致的思路都是一致的
这里拿onedrive举例
client_id和client_secret都不填,直接回车,这里选择注册产品时的地域。这里我选择global
下面的advanced config和 auto config都选择默认,直接回车,仅接着会弹出浏览器的对话
正常登录即可。登录好之后就算配置完成了。
需要注意的是,配置cloudflare的R2存储桶时需要准备好密钥id和密钥的key,第一步选择amazone的s3,提供商选择cloudflare,后续大致步骤都一致。
挂载
挂载比较简单
rclone mount <配置远程存储的名字>: <要挂载在本地的文件夹路径> --daemon |
比如:
rclone mount google_drive: ~/google_drive/ --daemon |
–daemon的意思是在后台以守护进程形式进行
这样挂载会将远程存储索引至本地,需要浏览时再下载至本地缓存。当在文件夹内添加内容时,会上传至对应的远程存储。对于缓存的配置参数,我并没有花过多的时间去研究,有兴趣的朋友可以自行研究一下。
需要注意的是,挂载r2时,需要加上存储桶的名字。
rclone mount <配置远程存储的名字>:<存储桶的名字> <要挂载在本地的文件夹路径> --daemon |
同步
rclone sync <本地需要同步的文件夹> <远程存储的名字>:<和本地文件夹对应的远程文件夹路径> --progress |
–progress的意思是将同步的过程进行输出,遇见问题方便调试
比如:
rclone sync /home/g/OneDrive/项目 onedrive:项目 --progress |
执行这个命令,只会同步一次,要想实现自动化,还需要shell脚本和定时任务的配合
将先前的同步命令编辑到一个.sh结尾的文件中
rclone sync /home/g/OneDrive/项目 onedrive:项目 --progress |
然后使用定时任务
crontab -e # 编辑定时任务 |
在定时任务中加入
*/30 * * * * sh /home/g/desktop/rclone-onedrive.sh >> /home/g/desktop/onedrive.log |
这里设置的是每i半个小时执行一次同步,顺带还能保留一个日志
结尾
在折腾的过程中,发现现在互联网上好多的中文内容都已经过时。比如搜索一个中文的技术问题,往往排在前面的都是CSDN、掘金等等这种社区的博客内容,内容质量堪忧。想要解决问题还得花大量时间在内容筛选上。还是好好学习英语吧,英文论坛的质量还是很高的,不管什么项目,官方文档一般第一个支持的语言就是英文。加油!共勉。