19 个版本 (10 个破坏性更新)

0.12.0 2022年11月7日
0.11.0 2022年3月16日
0.10.3 2021年10月27日
0.9.1 2021年5月31日
0.4.1 2020年11月21日

#654 in 文件系统

Download history 8/week @ 2024-03-29 4/week @ 2024-04-05

每月52次下载

MIT 许可协议

1MB
21K SLoC

Bupstash

Gitter

Bupstash 是一个加密备份工具 - 如果你需要安全的备份,Bupstash 是你的选择。

Bupstash 设计有以下特点:

  • 高效去重 - Bupstash 可以使用加密 tarballs 所需空间的一小部分来存储数千个加密目录快照。

  • 强大的隐私性 - 数据在客户端加密,并且存储库无需访问解密密钥。

  • 离线解密密钥 - 备份不需要将解密密钥放在受风险的服务器或计算机附近。

  • 键/值标签与搜索 - 同时保持标签完全加密。

  • 在慢速网络上的良好性能 - Bupstash 确实努力在高延迟网络(如蜂窝网络和远端连接)上良好工作。

  • 安全的远程访问控制 - 勒索软件、愤怒的配偶和不满的商业合作伙伴将无法删除你的远程备份。

  • 高效的增量备份 - Bupstash 知道上次备份了什么,并跳过该工作。

  • 低内存使用下的出色性能 - Bupstash 不会拖慢你的生产服务器。

  • 抵御恶意攻击的安全性 - Bupstash 使用内存安全语言编写,以大大减少网络上的攻击面。

稳定性和向后兼容性

Bupstash 是测试版软件,尽管我们尽力使 bupstash 无缺陷,但我们目前建议在可以容忍失败的情况下使用 bupstash 进行 冗余 备份。

存储库格式正在接近稳定,除非有非常强有力的理由,否则不会以向后不兼容的方式更改。未来的更改很可能是向后兼容的,或者在必要时提供迁移路径。

指南、文档和支持

典型用法

通过ssh初始化新的Bupstash仓库。

$ export BUPSTASH_REPOSITORY=ssh://$SERVER/home/me/backups
$ # Ensure bupstash is on the $PATH of both machines.
$ bupstash init

创建一个新的加密密钥,并告诉bupstash使用它。

$ bupstash new-key -o backups.key
$ export BUPSTASH_KEY="$(pwd)/backups.key"

将目录保存为tarball快照。

$ bupstash put hostname="$(hostname)" ./some-data
ebb66f3baa5d432e9f9a28934888a23d

保存命令的输出,检查错误。

$ bupstash put --exec name=database.sql pgdump mydatabase
14ebd2073b258b1f55c5bbc889c49db4

列出与查询匹配的项目。

$ bupstash list name="backup.tar" and hostname="server-1"
id="bcb8684e6bf5cb453e77486decf61685" name="some-file.txt" hostname="server-1" timestamp="2020/07/27 11:26:16"

列出备份中的文件。

$ bupstash list-contents id=bcb86*
drwxr-xr-x 0B 2020/10/30 13:32:04 .
-rw-r--r-- 7B 2020/10/30 13:32:04 hello.txt

获取与查询匹配的项目。

$ bupstash get id=bcb8684e6bf5cb453e77486decf61685
some data...

$ bupstash get id="ebb66*" | tar -C ./restore -xf -

从备份中检索单个文件。

$ bupstash get --pick hello.txt id="bcb86*"
hello!

比较备份,与本地目录或其他备份。

$ bupstash diff /home/ac :: id="a4b8f*"
...
- -rw------- 14.50KiB    2021/08/01 02:36:19 .bash_history
+ -rw------- 13.66KiB    2021/08/01 11:51:23 .bash_history

将备份恢复到本地目录。

$ mkdir restore-dir
$ bupstash restore --into ./restore-dir id="a4b8f*"

删除与查询匹配的项目。

$ bupstash rm name=some-data.txt and older-than 30d

运行垃圾回收器以回收磁盘空间。

$ bupstash gc

安装

从源代码

首先确保您已安装最新的rust+cargo、pkg-config和libsodium-dev软件包。

接下来克隆仓库并运行cargo build。

$ git clone https://github.com/andrewchambers/bupstash
$ cd bupstash
$ cargo build --release
$ cp ./target/release/bupstash $INSTALL_DIR

Pkgconf

您可以通过设置PKG_CONFIG环境变量使用pkgconf代替pkg-config(在freebsd上这是必需的)。

$ export PKG_CONFIG=pkgconf

构建手册页面

手册页面目前使用名为ronn的markdown到man页面渲染器构建。

$ cd doc/man
$ ronn -r *.md

生成发布tar包

$ sh support/src-release.sh $tag
$ echo bupstash-*.tar.gz
bupstash-$version-man.tar.gz
bupstash-$version-src+deps.tar.gz

测试套件

安装bash自动化测试框架并运行以下命令来运行单元测试和cli集成测试套件。

$ cargo test
$ cargo build --release
$ export PATH=${CARGO_TARGET_DIR:-$PWD/target}/release:$PATH
$ bats ./cli-tests

预编译版本

前往发布页面并下载适用于您平台构建。只需提取存档并将单个bupstash二进制文件添加到您的PATH中。

目前我们只为linux预编译(需要更多平台的帮助)。

依赖关系

~37–49MB
~835K SLoC