Spacedrive是一个由 Rust 编写的虚拟分布式文件系统(VDFS)驱动的开源跨平台文件管理器。

更新:Spacedrive 正在积极开发中,我们处于 Alpha 阶段,正式发布的下载可能会缺少或禁用一些功能。

在一个地方组织多设备上的文件。从云服务到脱机硬盘驱动器,Spacedrive 将您的设备的存储容量和处理能力合并成一个个人分布式云,既安全又直观易用。

对于独立创作者、文件收集者和那些希望拥有数字足迹的人来说,Spacedrive 提供了一种独特的免费文件管理体验。

简介 - 图1

什么是 VDFS

VDFS(虚拟分布式文件系统)是一种设计用于跨各种存储层工作的文件系统。通过统一的API在许多设备上操作和访问内容,VDFS不受限于单个计算机。它通过在实时同步数据库的同时维护所有存储位置的虚拟索引来实现这一点。该实现还使用CAS(内容寻址存储)来唯一标识文件,同时记录相对于存储位置的逻辑文件路径。

VDFS的第一个实现可以在UC伯克利的Haoyuan Li的这篇论文中找到。该论文描述了VDFS在云计算中的使用,然而底层概念可以转化为开放的消费者软件。

动机

我们中的许多人有多个云帐户,没有备份的驱动器以及面临丢失风险的数据。我们依赖于 Google Photos 和 iCloud 等云服务,但受限于有限的容量,服务之间和操作系统之间几乎没有互操作性。照片相册不应该被困在设备生态系统中,也不应该被用于广告数据收集。它们应该是与操作系统无关的、永久的和个人拥有的。我们创造的数据是我们的遗产,将长时间存留下来,开源技术是确保我们对定义我们生活的数据保持绝对控制的唯一途径,而且可以无限扩展。

体系结构

该项目使用我称之为“PRRTT”堆栈(Prisma、Rust、React、TypeScript、Tauri)。

  • 前端使用Prisma?🤯 这得益于由Brendonovich开发的prisma-client-rust。它使我们在开发过程中可以使用强大的迁移CLI,以及用于我们模式的Prisma语法。该应用程序捆绑了Prisma查询引擎和为Rust API生成的代码。我们的轻量级迁移运行器是专为桌面应用程序环境定制的。

  • Tauri 允许我们创建一个纯 Rust 本机 OS webview,而无需平均 Electron 应用程序的开销。这显着减小了捆绑大小和平均内存使用量。它还有助于在 macOS 上更具本地感觉,特别是由于 Safari 与 OS 的紧密集成。

  • 我们还使用rspc,它允许我们在Rust中定义函数,并以完全类型安全的方式在Typescript前端调用它们,因此不会出现不必要的错误进入生产!

  • 核心(sdcore)是用纯 Rust 编写的。

单体库结构:

应用程序:

  • desktop:一个Tauri应用程序。
  • mobile:一个React Native应用程序。
  • web:一个React webapp。
  • landing:一个使用Vite SSR和Vite pages的React应用程序。

核心: core:Rust核心,内部称为sdcore。包含文件系统、数据库和网络逻辑。可以部署在各种主机应用程序中。

包:

  • client:一个处理 UI 和 Rust 核心之间数据流的 TypeScript 客户端库。
  • ui:一个 React 共享组件库。
  • interface:React 中的完整用户界面(由应用程序 desktop、web 和 landing 使用)
  • config:eslint配置(包括 eslint-config-next、eslint-config-prettier 以及整个单体库中使用的所有 tsconfig.json 配置)。
  • macos:用于 MacOS 系统扩展的 Swift 本机二进制文件。
  • ios:Swift 本机二进制文件(计划中)。
  • windows:C# 本机二进制文件(计划中)。
  • android:Kotlin 本机二进制文件(计划中)。