现如今,云存储已经成为了数据存储的主流方式。把大规模的数据放置到云存储提供商,可以节省硬件成本和维护成本,并易于扩展,易于协作,可从任意设备访问。然而,不同的云存储提供商提供了不同的管理界面,以及不同的功能特性,当同时使用多家不同的云存储服务时,来回切换就变得十分麻烦,不利于数据的统一管理。Cloudreve,把多家云存储后端集中起来,提供统一的管理界面和功能接口,使得云存储变得更加便捷简单。
简介
Cloudreve,是 cloudreve 在 Github 上开源的支持多家云存储的云盘系统,项目位于 https://github.com/cloudreve/Cloudreve,目前版本为 3.1.1。
Cloudeve是一个支持多加云存储驱动的公有云文件系统,特性丰富,功能全面,包括:
- 支持把包括本机、从机、七牛、阿里云 OSS、腾讯云 COS、又拍云、OneDrive 等作为存储端
- 支持客户端直传,支持 Aria2 离线下载
- 支持在线压缩和解压缩,支持多文件打包下载
- 支持拖拽上传、目录上传、流式上传
- 支持多用户,支持用户组管理
- 支持对于文件和目录的链接分享,支持分享链接自动过期
- 支持包括视频、图像、音频、文本和 Office 文档等类型文件的在线预览
- ……
安装
Cloudreve 提供了不同操作系统和架构的程序,包括 Linux 和 Windows,以及 amd64 和 arm。下载并解压缩后,直接运行即可:
# 解压程序包
tar -zxvf cloudreve_VERSION_OS_ARCH.tar.gz
# 赋予执行权限
chmod +x ./cloudreve
# 启动 Cloudreve
./cloudreve
也可以在本地自行构建。Cloudreve 的服务端技术栈为 Go 语言和 Web 框架 Gin,前端框架则为 React + Redux + Material-UI。构建需要 Go >= 1.13,以及 Yarn。首先把代码下载到本地:
git clone --recurse-submodules https://github.com/cloudreve/Cloudreve.git
然后,对于静态资源进行构建,使用 yarn 安装依赖,并运行构建命令:
# 进入前端子模块
cd assets
# 安装依赖
yarn install
# 开始构建
yarn run build
接下来,使用 statik 库进行静态资源的嵌入:
# 回到项目主目录
cd ../
# 安装 statik, 用于嵌入静态资源
go get github.com/rakyll/statik
# 开始嵌入
statik -src=assets/build/ -include=*.html,*.js,*.json,*.css,*.png,*.svg,*.ico -f
最后,对于 Go 语言的主体项目进行编译:
# 获得当前版本号、Commit
export COMMIT_SHA=$(git rev-parse --short HEAD)
export VERSION=$(git describe --tags)
# 开始编译
go build -a -o cloudreve -ldflags " -X 'github.com/HFO4/cloudreve/pkg/conf.BackendVersion=$VERSION' -X 'github.com/HFO4/cloudreve/pkg/conf.LastCommit=$COMMIT_SHA'"
也可以使用项目提供了 build.sh 进行快速构建:
./build.sh [-a] [-c] [-b] [-r]
a - 构建静态资源
c - 编译二进制文件
b - 构建前端 + 编译二进制文件
r - 交叉编译,构建用于release的版本
示例
Cloudreve 提供了一个云存储的管理界面:
通过左侧的侧边栏选择功能,选择我的文件,右侧显示当前路径的文件夹和文件列表,提供了视频和图片文件的预览功能。侧边栏可以对文件类型进行筛选,包括:视频、图片、音频等,可以选择不同类型的媒体文件,还提供了收藏菜单,可以对文件进行收藏。另外,还可以通过添加标签,添加新的文件类型菜单。
侧边栏还提供了其他高级功能,包括进行文件分享、离线下载、容量配额、WebDAV,和任务队列等,在左下角显示了存储空间的使用情况。
在上方的导航栏,提供了文件搜索功能,以及设置,和用户菜单功能。Cloudreve 提供了一个较为美观使用的管理界面,方便日常文件管理。
Cloudreve 目前提供了对多家云存储供应商得支持,对它们得共同功能进行了集成。同时,各平台所提供的功能也有所不同:
在上传下载等基本功能上,各云存储平台都提供了相应的接口,基本满足了日常使用。区别之处包括 OneDrive 不支持真实文件名下载,OSS、COS 和 又拍云有理论最大文件限制,以及所有远程云平台都需要公网接入。
而对于一些高级功能,各平台的支持也有所不同:
包括七牛不支持下载限速,又拍云不支持下载限速,和 OneDrive 不支持下载限速和直链获取。
另外,对于流量路径方面,由于直传和中转传输具有不同的传输速度,各平台也有不同的支持:
在使用时,在享受各平台功能统一性的同时,也要在某些功能注意不同平台的支持。
Cloudreve 还提供了离线下载功能,由 Aria2 驱动,用户可以创建 HTTP、磁力链接、种子下载任务,由服务端下载完成后加入到用户文件中。
总结
Cloudreve 作为一个公有云文件系统,提供了对于多家云存储平台的支持,使得可以对文件云存储进行统一集中管理,提供了美观使用的后台图形界面,方便了日常的文件上传下载工作,并提供了包括文件分享、WebDAV、离线下载等高级功能,进一步提供了便利,值得尝试使用,也值得对代码进行学习参考。