Exodrive

给内置磁盘腾出空间。

Exodrive 把开发缓存搬到外接磁盘。它先逐字节校验副本,校验通过后才释放本机空间。

Apache 2.0,免费使用。macOS 版需要 macOS 13 或更高版本。

这台 Mac82 GB 可用
缓存占用 38 GB
迁移
外接磁盘1.8 TB 可用
已迁入 6 GB

这是示例。窗口读取真实数字。

每次迁移都走同样的五步

顺序就是安全保证:副本被证实之前,本机缓存一字节都不动。

  1. 拷贝

    缓存复制到磁盘,保留权限和修改时间。

  2. 校验

    Exodrive 读取两侧的每个文件。有一个字节不同,迁移立即停止。

  3. 记账

    这次迁移写入账本,将来搬回时按账本找到它。

  4. 切换

    工具下次启动时读取新路径。

  5. 回收

    Exodrive 删除本机副本。空间回到你手里。

数据可能受损时,Exodrive 直接停下

每条规则都是拒绝执行。没有任何一条会退化为弱安全模式。

规则发生什么
文件系统 只接受 APFS、HFS+、ext2、ext3、ext4、btrfs、zfs、xfs、f2fs、bcachefs、NTFS。拒绝 exFAT、FAT32。
程序在运行 包管理器或容器引擎正在运行时,迁移停止。先停止该程序。
shell 变量 shell 里的缓存路径会盖过工具设置。Exodrive 指出变量名并停止。
二进制 只搬缓存。你的可执行文件留在原处。
重复迁移 账本里已有的条目不再迁移。先把它搬回来。

Exodrive 收录哪些缓存

每种工具链用自己的设置项或软链接生效。窗口在卡片上写明改了什么。

工具链迁移内容工具如何找到新路径
npm全局缓存npm config set cache
pnpm包仓库pnpm config set store-dir
yarn 1.x缓存目录yarn config set cache-folder
Cargoregistry/ 与 git/软链接
GoGOCACHE、GOMODCACHEgo env -w
Buninstall/cache软链接
uv缓存与 Python 工具链软链接
pip缓存pip config set global.cache-dir
Docker DesktopDocker.raw指向文件的软链接
OrbStackVM 数据与镜像data_dir
ColimaVM 磁盘指向 ~/.colima 的软链接
Ollama模型仓库指向模型目录的软链接
Hugging FaceHF_HOME 下的 hub/软链接
LM Studio模型仓库指向模型目录的软链接
XcodeDerivedData、Archives、DeviceSupport、Previews 与 Xcode 缓存分别为每个目录建立软链接
Mavenrepository/软链接
Gradlecaches/ 与 wrapper/dists/软链接
CocoaPods缓存与 spec 仓库软链接
SwiftPM包缓存软链接
Dart / Flutterpub 缓存的下载包与 git 检出分别为每个目录建立软链接
Android构建缓存软链接
Condaconda info 报告的每个包目录分别为每个目录建立软链接
Homebrewdownloads/软链接

Exodrive 不迁移 ~/Library/Developer/CoreSimulator/Devices。 软链接会让 Xcode 无法创建模拟器设备。

安装

一条命令安装最新版本:

curl -fsSL https://jungley8.github.io/exodrive/install.sh | sh

Windows 上在 PowerShell 里运行:

irm https://jungley8.github.io/exodrive/install.ps1 | iex

脚本下载对应本机的包,并用 SHA256SUMS 校验;校验不通过就停止。运行前可以先读脚本: install.sh 或 install.ps1。 macOS 应用为 ad-hoc 签名,从浏览器下载的文件首次打开会要求确认:右键点按应用,选择「打开」。

也可以从发布页直接下载压缩包。

Exodrive 在哪里运行

承诺刻意写窄:目前只有一个平台背负承诺。

macOS 13 或更高版本

窗口在这里发布,所有测试都在这里运行。

Linux

命令行工具可构建可运行,CI 在 Ubuntu 上测试。

Windows

窗口与命令行工具都发布。Windows 上没有测试。