



























曾经,我组建了一个极空间的 NAS。往里面塞了两块 12T 的硬盘,将 20 年来的照片,音乐,电影,游戏、代码、文档都导了进去。虽然两块硬盘互为备份的机制一定程度解决了硬盘可能出现的寿命问题,但心里总是没底,毕竟两块硬盘在物理层面是放在一起的,万一出个什么断电或者天灾什么的,两块硬盘一起坏了怎么办?将数据备份到网盘是一个不错的选择。但问题马上出现,NAS 上的文件至少有几十万到上百万,有些文件的目录层级还藏的很深,还有一些超过 10G 的巨型文件。绝大多数网盘都无法处理这种海量文件和巨型文件的情况,另外,照片库是一个非常隐私的东西,我也不想直接把照片传到网盘上,被大数据精准营销,有些文件,比如游戏和电影资源,还可能会直接被网盘封杀,另外,每隔一段时间,我都需要向网盘上传新增的文件,很难整理出哪些文件是新的,将以上问题总结起来就是——
首先想到的方案是直接通过 7-Zip 分卷加密压缩,但是这样意味着当我想从网盘中取出某一个文件时,必须要把整整 2~3T 的文件全部下下来。后来我了解到了 Duplicati,这也是很多极空间用户的选择。他可以直接通过 Docker 的方式部署在极空间,实现文件的加密备份,你可以手动设置每个备份文件的最大大小,更方便的是需要某个文件时,只需要从网盘下载相关的分卷即可。但使用以后,我又发现以下两个问题——

对此,我想出了以下备份方案——
总体思想:保持目录结构的同时,大文件分卷,小文件合并,使用 7-Zip 进行加密压缩
这样当我在异地需要从网盘取回某个指定文件时,只需要到对应的目录,下载对应的压缩文件,用 7-Zip 解压,输入密码即可,只需要一个解压软件,其他任何工具都不需要装,是不是非常方便!
最近出了一个以 Spec Coding(规约编程)为卖点的 AI IDE 名叫 Kiro,正好拿这个项目试试水!你可以查看 requirements.md、design.md、tasks.md 来看看 Kiro 是如何从 0 完成整个项目的,真的很强!
项目已开源:https://github.com/imaegoo/zbak
如果你认为这个备份方法适合你,欢迎下载使用!工具现支持命令行调用,也支持 Docker 调用。我是直接在极空间上的 Docker 跑的。

备份出来的目录就长这样,保持源目录结构的同时,拆分了大文件,合并了小文件,全部实现加密压缩,每次备份都生成一个时间戳命名的目录。
1 | target_dir/ |
写个 config.yaml 跟程序放一起就行。
| 配置项 | 类型 | 必需 | 说明 |
|---|---|---|---|
source_dir | string | 是 | 需要备份的源目录路径 |
target_dir | string | 是 | 存储备份文件的目标目录路径 |
volume_size | int64 | 是 | 分卷大小(字节),建议4GB(4294967296) |
password | string | 是 | 加密密码,用于7zip AES-256加密 |
concurrency | int | 是 | 并发压缩任务数,建议设置为CPU核心数 |
compression_level | int | 否 | 压缩级别 (0-9),默认为1(极速)。0=存储,1=极速,5=正常,9=最大压缩 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。