Spacedrive
来自未来的文件浏览器。
spacedrive.com »
下载适用于
macOS(Apple Silicon |
Intel)·
Windows ·
Linux ·
iOS ·
Android
~ iOS 和 Android 的链接将在发布后添加。~
Spacedrive 是一款开源的跨平台文件管理器,由用 Rust 编写的虚拟分布式文件系统(VDFS)驱动。
更新:Spacedrive 正处于 alpha 开发的最后阶段(2024 年 7 月 6 日),将于今年夏天全面发布!目前一些主要功能仅能通过开发模式下的功能标志访问,可在常规设置中找到。
在一处组织多设备的文件。从云服务到离线硬盘,Spacedrive 将您设备的存储容量和处理能力整合成一个个人分布式云,既安全又直观易用。
对于独立创作者、数据收藏者以及希望掌控自己数字足迹的人来说,Spacedrive 提供了一种前所未有的免费文件管理体验。
什么是 VDFS?
VDFS(虚拟分布式文件系统)是一种设计用于跨多种存储层工作的文件系统。通过统一的 API 来操作和访问多设备间的内容,VDFS 不局限于单一机器。它通过维护所有存储位置的虚拟索引,并在客户端之间实时同步数据库来实现这一目标。该实现还使用 CAS(内容寻址存储)来唯一标识文件,同时保留相对于存储位置的逻辑文件路径记录。
VDFS 的首次实现可以在加州大学伯克利分校的这篇论文中找到,作者是 Haoyuan Li。这篇论文描述了它在云计算中的应用,但其基本概念可以转化为开放的消费者软件。
动机
我们中的许多人拥有多个云账户、未备份的驱动器以及面临丢失风险的数据。我们依赖 Google Photos 和 iCloud 等云服务,但被锁定在有限的容量中,几乎无法在服务和操作系统之间实现互操作。照片相册不应该被困在设备生态系统中,或被用于广告数据收集。它们应该与操作系统无关,永久保存并由个人拥有。我们创建的数据是我们的遗产,将长期存在——开源技术是确保我们能够在无限规模下保持对定义我们生活的数据绝对控制权的唯一方式。
路线图
在此处查看我们计划的功能列表:spacedrive.com/roadmap
开发者指南
请参阅贡献指南了解如何从源代码安装 Spacedrive。
安全政策
请参阅安全政策了解详情,以及如何负责任地报告安全漏洞或问题。
架构
本项目使用我称之为 "PRRTT" 技术栈(Prisma、Rust、React、TypeScript、Tauri)。
- 前端使用 Prisma?🤯 这要归功于 Brendonovich 开发的 prisma-client-rust。它让我们能够在开发中使用强大的迁移 CLI,并为我们的模式提供 Prisma 语法。应用程序捆绑了 Prisma 查询引擎和代码生成,为我们提供了一个漂亮的 Rust API。我们的轻量级迁移运行器是为桌面应用程序环境定制构建的。
- Tauri 允许我们创建一个纯 Rust 原生 OS 网页视图,没有普通 Electron 应用程序的开销。这大大降低了打包大小和平均内存使用量。它还有助于提供更原生的体验,特别是在 macOS 上,因为 Safari 与操作系统紧密集成。
- 我们还使用了 Oscar Beaumont 创建的 rspc,它允许我们在 Rust 中定义函数,并以完全类型安全的方式在 TypeScript 前端调用它们。
- 核心(
sdcore
)用纯 Rust 编写。
单体仓库结构:
应用:
desktop
:一个 Tauri 应用。mobile
:一个 React Native 应用。web
:一个 React 网页应用。landing
:一个使用 Next.js 的 React 应用。server
:一个用于网页应用的 Rust 服务器。cli
:一个 Rust 命令行界面。(计划中)storybook
:一个用于 UI 组件的 React storybook。
核心:
core
:Rust 核心,内部称为sdcore
。包含文件系统、数据库和网络逻辑。可以部署在各种主机应用程序中。crates
:核心和其他 Rust 应用程序使用的共享 Rust 库。
界面:
interface
:完整的 React 用户界面(用于desktop
、web
应用)
包:
-
assets
:共享资源(图片、字体等)。 -
client
:一个 TypeScript 客户端库,通过 RPC 处理 UI 和 Rust 核心之间的数据流。 -
config
:eslint
配置(包括eslint-config-next
、eslint-config-prettier
和单体仓库中使用的所有tsconfig.json
配置)。 -
ui
:一个 React 共享组件库。 -
macos
:一个用于 MacOS 系统扩展的 Swift 原生二进制文件(计划中)。 -
ios
:一个 Swift 原生二进制文件(计划中)。 -
windows
:一个 C# 原生二进制文件(计划中)。 -
android
:一个 Kotlin 原生二进制文件(计划中)。