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 文件系统
每月52次下载
1MB
21K SLoC
Bupstash
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