计划
核心目标:控制数据可恢复,系统可重建
【2026-10-08 节奏重排】ZFS 已废(存储定案 ext4)⇒ 下方原计划中全部 zfs snapshot / send /
syncoid / sanoid / zpool 相关内容作废(原文保留备查)。改为:
一、系统备份(配置层,不做整盘镜像)
主机 ↔ 僚机 双向选择覆盖:任一方被验证可用后,将配置与系统状态同步到对方
依据:NixOS 的系统可由声明重建,不需要镜像;重点是 /etc/nixos 与 /home
二、主机系统整体备份的范围(他问的「缺 EFI 世代记录」有答案)
内容:root 的配置文件 + 系统程序(/nix/store 重建即可)+ 数据文件
疑点:只备 root 不备 ESP ⇒ 恢复后引导菜单里的历史 generation 不在
结论:连 ESP 一起备。世代记录(loader/entries 与各代内核/initrd)全在 ESP 上,
它只有几十 MB,成本极低;不备反而贵
三、数据层冷备(/s500data → 移动硬盘)
可浏览的 rsync 副本 + 逐文件 SHA256 清单(跨格式、跨文件系统的完整性基线)
旧 Win 的 VHDX 与傲梅 .adi 保留为最终兜底
四、验证
日常:rsync 后抽查 diff
季度:用僚机或 VM 做一次完整恢复演练
五、灾难重建 S.O.P(对应新结构)
1. 新盘装 NixOS
2. 恢复 /etc/nixos 与 /home,nixos-rebuild switch
3. 恢复 /s500data
4. 恢复 ESP(保留世代菜单)或重装引导
【原计划(ZFS 时代,保留备查)】
【备份策略矩阵】
s500data → ZFS 本地快照 + rsync 到移动硬盘(可浏览)
repos → ZFS 本地快照 + rsync 到移动硬盘(可浏览)
docker → ZFS 本地快照 + rsync 到移动硬盘(可浏览)
vms → ZFS 本地快照 + zfs send -c 块级增量到移动硬盘
【本地自动快照(Sanoid)】
策略:s500data/repos/docker/vms 4个小时,7个日,4个周,12个月,3个年
回滚:zfs rollback dataset/s500data@autosnap_xxx
【冷备】
首次初始化:
zpool create backup_pool /dev/disk/by-id/移动硬盘
zfs create backup_pool/vms
mkdir -p /mnt/backup-rsync/{s500data,repos,docker}
日常同步:
rsync -a --delete --inplace /dataset/s500data/ /mnt/backup-rsync/s500data/
rsync -a --delete --inplace /dataset/repos/ /mnt/backup-rsync/repos/
rsync -a --delete --inplace /dataset/docker/ /mnt/backup-rsync/docker/
sanoid --take-snapshot=manual dataset/vms
syncoid --no-privilege-elevation --sendoptions="-c" dataset/vms backup_pool/vms
zpool export backup_pool && 拔盘
触发方式:手动执行 backup.sh,或通过 Hermes-Host 说“执行冷备”
【验证机制】
日常:rsync 后 diff -r 抽查;zfs send 后 zstreamdump 校验
季度:隔离 VM 中执行完整恢复演练
【灾难重建 S.O.P】
1. 新盘装 NixOS LiveUSB
2. 挂载 /dataset,git clone 配置,nixos-rebuild switch
3. rsync 恢复 s500data、repos、docker
4. zfs receive 恢复 vms
5. 全量复活,< 30 分钟
【空间估算】
rsync 副本 ~600GB(三个目录合计)+ zfs send 流 ~200GB = 800GB
2TB 移动硬盘剩余 1.2TB 缓冲