5 个版本 (3 个重大更新)

0.7.0 2023年7月10日
0.6.0 2023年5月1日
0.4.1 2022年5月31日
0.4.0 2022年5月25日
0.3.0 2022年5月15日

#1541 in 文件系统


2 crates 中使用

MIT/Apache

71KB
2K SLoC

Zerostash

master

Zerostash 是一个具有版本控制的去重、加密文件存储库。

它旨在追求速度并确保所有与文件相关的元数据的安全,包括存储数据的精确大小。

在 M1 Macbook Air 上,Zerostash 可实现大约 1GB/s 的速度。

用例

  • 云端或外部硬盘上的增量备份
  • 加密并存储整个工作区,以实现计算机之间快速同步
  • 密码学上的 Git

入门

使用以下方法之一安装 0s 命令后,您就可以开始备份了

0s commit /path/to/repository $(pwd)

就这样!无需配置。

您将需要输入用户名和密码来创建一个存储库,您需要在随后的调用中输入这些凭据。

如果您想更高级,可以在提交时留下注释,就像您使用 Git 一样。

0s commit -m 'My first backup!' /path/to/repository $(pwd)

只有当运行之间有变化时才会创建提交以节省空间并加快速度。

然后您可以使用 checkout 子命令和输入您的凭据来恢复备份

0s checkout /path/to/repository files_to_restore/*

有关更多详细信息,请运行

0s --help

远程备份

您可以使用以下语法将备份对象发送到兼容 S3 的远程位置

0s commit s3://accesskey:secretkey@region#server.com/bucket /

例如,如果您的文件在 AWS 上,位于 us-east-1 区域,您可以按如下方式使用存储桶

0s commit s3://us-east-1#/backups

从 URL 中省略访问和秘密密钥参数将读取它们的环境

export AWS_ACCESS_KEY_ID=xxxx
export AWS_SECRET_ACCESS_KEY=xxxx

配置

带有示例和文档的配置文件可以在 此存储库中找到

将其放置在 ~/.config/zerostash/config.toml,或您的 $XDG_CONFIG_HOME/zerostash 目录中。

使用配置文件是可选的,但可以使管理存储更轻松,并且一些强大的后端配置目前还没有在命令行界面中公开。

一个示例配置看起来像这样

[mystash]
key = { source = "ask"}
backend = { type = "fs", path = "/archive" }

要使用您新定义的 mystash 存储在您的备份中,只需使用它而不是存储库的路径。

0s commit mystash /path/to/movies

安装

Zerostash 支持Linux、macOS和Windows,您可以从 GitHub发行版页面 下载预构建的二进制文件!

如果您正在寻找包管理器集成,请查看下面的内容。

macOS上的安装

有一个您可以使用homebrew tap!

brew install symmetree-labs/homebrew-tap/zerostash

NixOS上的安装

实际上这个仓库是一个nix flake!您可以在基于flake的配置中包含 zerostash 包,或者像这样运行它

nix run github:symmetree-labs/zerostash

注意:由于一个已知问题,nix/macOS目前不受支持。请帮助我们找到解决方案!

使用cargo安装

假设您已经在系统上安装了 cargo,您可以使用它从 crates.io 安装zerostash。

cargo install zerostash

使用预构建的二进制文件

您可以从 GitHub发行版页面 下载静态Linux二进制文件。

将其放置在您的 $PATH 中,然后运行

0s --help

从源代码构建

使用通常的Rust咒语也可以自己构建二进制文件。使用 rustup 运行 cargo 或使用您的包管理器,然后开始

cargo build --release

威胁模型

Zerostash将以下内容视为威胁模型的一部分

  • 保护数据机密性、完整性和真实性
  • 数据的确切大小不应为人所知
  • 个人用户数据不应在共享存储中可归因
  • 一旦数据共享,就不再安全。
  • 应能够从存储中删除数据
  • 仅访问密钥和原始数据不足以完全泄露数据

设计

有关加密设计的更多详细信息,请参阅底层 Infinitree 库中的 文档

安全通知

这是一个未经过审查的安全软件。请自行承担风险。

许可证

根据GPLv3分发。

依赖项

~24–36MB
~647K SLoC