0.1.0 |
|
---|
#183 在 #备份
1MB
2K SLoC
ZeroStash
这是什么
ZeroStash 是一个去重、加密的数据存储库,提供原生版本控制功能,旨在保护所有与文件相关的元数据,包括存储在容器中的数据的精确大小。
用例
- 云或外部硬盘中的版本化备份
- 加密并存储整个工作空间,以实现计算机之间快速同步
- 在旅行中轻松同步和擦除数据以及加密程序
- 离站备份的存储和同步后端
威胁模型
ZeroStash 考虑以下因素作为威胁模型的一部分
- 保护数据机密性、完整性和真实性
- 数据的确切大小不应为人所知
- 个人用户数据不应归因于共享存储
- 一旦数据被共享,它就不再安全。
- 应能够从存储中删除数据
- 仅访问密钥和原始数据不足以完全泄露数据
如何使用
您可以从 GitHub 发布 页面下载静态 Linux 二进制文件。将其放置在您的 $PATH
中,然后运行
0s help
示例配置文件可以在 此处 找到。将其放置在 $XDG_CONFIG_HOME/zerostash/config.toml
中,并根据需要编辑。在大多数系统上,这将是 ~/.config/zerostash/config.toml
使用配置文件是可选的,但可以使管理存储库更容易。
请注意,某些命令可能无用了。这是一个高度实验性的软件,功能可能缺失。至少以下命令 将会 工作正常
wipe
:销毁本地文件存储库ls
:列出存储库中的文件commit
:将新文件添加到存储库checkout
:恢复文件
构建
使用常规 Rust 语法也可以自己构建二进制文件。需要使用夜间编译器来构建一些依赖项。
cargo +nightly build --release
要获取使用说明,请尝试
cargo +nightly run --release --bin 0s help
基准测试
目前,这是一个对象格式的非功能性演示。您可以这样做:
cargo run --release --bin 0s-bench 4 $(pwd) ../repo ../restore
因此,该过程将使用4个线程将当前目录备份到../repo
,并在之后立即将其恢复到../restore
。
关于性能的一些极其非科学的桌面测量
* files: 9917,
* chunks: 12490,
* data size: 1071.7888813018799
* throughput: 356.81619052498746
* objects: 161
* output size: 644
* compression ratio: 0.6008646023811578
* meta dump time: 0.088976801
* meta object count: 1
read time: 0.193175887
restore time: 1.5405925969999998
throughput packed: 371.4452107897469
throughput unpacked: 618.1845449336705
设计
有关设计的更多详细信息,请参阅文档。
许可证
根据GPLv3分发。
依赖关系
~10–20MB
~362K SLoC