#加密 #数据 #备份 #同步 #去重 # #存储

已撤回 libzerostash

加密和去重存储库

0.1.0 2020年7月28日

#183#备份

GPL-3.0 许可证

1MB
2K SLoC

ZeroStash

master

这是什么

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