基于 Mac Mini + gyCOS 的数据管理体系

基于 Mac Mini + gyCOS 的数据管理体系

本文介绍了一套以 Mac Mini 为中枢、自研备份工具 gyCOS 为核心的个人数据管理方案。通过“移动硬盘直连 + 增量去重备份”的组合,解决了磁盘格式不兼容、网络传输缓慢、备份冗余等痛点,实现低成本、高效率的数据掌控。

前言 #

当个人数据量增长到一定规模时,我们往往会陷入“既要便捷访问,又要安全备份”的两难境地,为此NAS 成为了解决方案,但这一方案存在以下痛点:

  1. 兼容性痛点:Mac 与 NAS 磁盘格式的“水土不服” NAS 通常基于 EXT4、BTRFS 等磁盘格式,这些磁盘在 Mac 上通常难以读写(或仅能读取无法修改),一旦 NAS 硬件故障,数据恢复极其麻烦。此外,即便NAS采用了万兆网络,海量小文件的访问速度仍无法媲美硬盘直连。

  2. 空间焦虑:重复文件与版本管理的混乱 目录结构调整、文件重命名,在传统备份工具眼中往往被视为“新文件”重新备份,多设备间的重复数据被多次存储。这不仅浪费空间,更让人产生“不敢随意备份”的心理负担。

  3. 运维噩梦:多设备分散备份 当数据源分散在 MacBook、Windows PC、Linux Server、飞牛 NAS 等多个设备上时,维护一套完整的“本地+异地”备份体系极其繁琐。同时,海量小文件让网盘备份变得困难。

  4. 进阶需求:版本回溯与节能

  • 时光机级回溯:需要支持单文件/目录的多版本历史回溯。
  • 静音与节能:存储设备需长期运行,要能够低功耗。

解决方案:Mac Mini + gyCOS #

针对以上痛点,我搞了一套以 Mac Mini 为存储中枢、自研的 gyCOS 备份工具为核心的数据管理方案,拓扑结构如下:

硬件选型 #

设备 角色 核心职责
Mac Mini 数据存储中枢 外接存储热\冷数据的硬盘;负责运行 gyCOS 备份程序。
N100 小主机 功能补充节点 安装飞牛 OS,挂载 Mac Mini 磁盘,提供外网访问与 APP 适配。

最近得知飞牛OS 出了ARM版本,将飞牛直接运行在Mac Mini上或许是更好的选择,少了一个设备。

方案亮点 #

1. Mac Mini 中枢:解决格式兼容与加密安全 #

Mac Mini通过挂载移动硬盘并开启Samba文件共享,使其自身成为一台NAS设备,解决了磁盘格式兼容问题,此外还能实现:

  • 极速访问:移动硬盘可以拔下来、直连电脑进行文件管理,完美解决加载大量图片、前端代码依赖(如node_modules)等对速度敏感的场景,享受满速体验。
  • 原生加密保障:硬盘采用苹果原生 “APFS (加密)” 格式,避免磁盘丢失导致的数据泄露。

2. gyCOS 备份服务:智能去重与高效传输 #

[!info] 开源项目:gyCOS 🚀 GitHub 地址https://github.com/my-yy/gyCOS

这是一个受 Linux Time Machine 和 MinIO 对象存储启发而写的备份工具,主要解决数据冗余与网络传输效率问题。(原名叫PyCOS,不过发现与pip包重名,所以改了名)

核心设计理念 #
  • 内容去重: 利用 MongoDB 记录文件 MD5。备份时如果文件内容(MD5)已存在,直接跳过物理存储,仅记录元数据,极大节省空间。

  • 块存储: 针对网络备份场景优化,根据文件大小采用差异化备份存储策略:

    1. 大文件 (>200M):直接拷贝到冷备份磁盘。
    2. 小文件 (<200M):聚合打包为 1GB 左右的数据块,显著提升网盘备份时的传输效率。

实操案例 #

为简化管理,我的设备上(电脑、NAS、移动硬盘)会建立统一的同步目录(下图中的 1_Sync),里面存储了需要备份的数据,在备份时选择这个目录即可:

1. 备份本地挂载的磁盘 #

备份 Mac Mini 挂载的 SSD 到冷备盘:

# 语法:python main.py backup <源路径> 
python main.py backup /Volumes/2TB/1_Sync

运行效果: 程序扫描了 8109 个文件(1.20TB),发现 863 个重复文件直接跳过,节省了存储空间。

2. 备份NAS 数据 #

我的数据主要存储在 Mac Mini 挂载的移动硬盘上,但飞牛 NAS 上也有少量数据需要备份。通过 Mac Mini 网络挂载飞牛磁盘进行备份:

# --device-name 参数用于区分不同的数据来源
python main.py backup /Volumes/1_Sync --device-name="fnOS_u2"

运行效果: 扫描 43421 个文件,其中 10444 个文件已存在(去重),大幅减少了网络写入量。

3. 可视化管理与恢复 #

gyCOS 提供了一个简单的 Web 界面来管理备份:

  • 项目概览:清晰展示不同设备、不同路径的备份状态。

  • 时光机回溯:点击项目,即可查看历次备份的时间点、文件变化量。

  • 文件恢复:浏览任意历史版本的文件列表,支持单文件下载恢复。(这里缺失一个“批量恢复“的功能,等需要全盘恢复时再搞😈)

4. 灾备机制:gyCOS 自我备份 #

gyCOS 的元数据(MongoDB 库 + 文件索引)是系统的“大脑”,存储在Mac Mini上,缺失这些数据将导致备份无法还原。为此系统内置了一键备份功能,将核心数据库定期快照到冷备磁盘。


总结 #

这套方案通过 “Mac Mini + gyCOS 备份” 的组合,解决了数据管理的四大痛点:

  1. 兼容性:Mac Mini + APFS 格式,保证了在苹果生态下的极致兼容与速度。
  2. 抗冗余:MD5 全局去重,让备份空间利用率最大化,无惧目录结构调整。
  3. 低运维:统一的冷备入口,简化了多设备的复杂度。
  4. 灵活性:既有 NAS 的网络共享能力,又有直连硬盘的高速读写体验。