33 个版本 (6 个稳定版本)
24.8.0 | 2024年8月12日 |
---|---|
23.11.0 | 2023年11月4日 |
23.9.0 | 2023年9月24日 |
23.5.0 | 2023年5月24日 |
0.2.0 | 2016年4月23日 |
#111 in 文件系统
每月下载量 313
用于 conserve-fuse
340KB
7K SLoC
Conserve:一个健壮的备份程序
https://github.com/sourcefrog/conserve/
Conserve 的 指导原则
-
安全:Conserve 使用 Rust 编写,这是一种快速的系统编程语言,具有关于类型、内存安全和并发的编译时保证。Conserve 使用 保守的日志结构格式。
-
健壮:如果在存储中某个文件损坏,或者由于 Conserve 的错误,或者备份中断,您仍然可以恢复所写入的内容。(Conserve 不需要大事务来完成才能使数据可访问。)
-
小心:备份数据文件在写入后永远不会被触及或更改,除非您选择清除它们。
-
现在需要帮助时:恢复大型备份的子集非常快,因为它不需要读取整个备份。
-
不断进步:即使备份过程或其网络连接被反复杀死,Conserve 也能快速恢复到上次的位置并继续前进。
-
适用于当今时代:存储格式在具有高延迟、有限功能、无限容量的最终一致云对象存储上既快又可靠。
-
快速:Conserve 利用 Rust 的 无畏并发 充分利用多个核心和 IO 带宽。(在当前版本中,仍有空间添加更多并发性。)
-
便携:Conserve 在 Windows、Linux(x86 和 ARM)和 OS X 上进行了测试。
快速入门指南
Conserve 存储位于由 conserve init
创建的 归档 目录内
conserve init /backup/home.cons
conserve backup
将源目录复制到归档中的新 版本。Conserve 复制文件、目录和(在 Unix 上)符号链接。如果 conserve backup
命令成功完成(复制整个源树),则备份被认为是 完成 的。
conserve backup /backup/home.cons ~ --exclude /.cache
conserve diff
显示归档和源目录之间的差异。它通常应提供与用于创建备份相同的 --exclude
选项。
conserve diff /backup/home.cons ~ --exclude /.cache
conserve versions
列出了存档中的版本,包括备份是否 完整,备份开始的时间以及完成所需的时间。每个版本都有一个以 b
开头的名称。
$ conserve versions /backup/home.cons
b0000 complete 2016-11-19T07:30:09+11:00 71s
b0001 incomplete 2016-11-20T06:26:46+11:00
b0002 incomplete 2016-11-20T06:30:45+11:00
b0003 complete 2016-11-20T06:42:13+11:00 286s
b0004 complete 2016-12-01T07:08:48+11:00 84s
b0005 complete 2016-12-18T02:43:59+11:00 4s
conserve ls
显示特定版本的文件。与所有从存档读取磁带的命令一样,默认情况下它操作最新的版本,您可以使用 -b
指定不同的版本。(您也可以省略备份版本的前导零。)
conserve ls -b b0 /backup/home.cons | less
conserve restore
将存档中的版本复制出来
conserve restore /backup/home.cons /tmp/trial-restore
conserve validate
检查存档的完整性
conserve validate /backup/home.cons
conserve delete
从存档中删除特定的命名备份
conserve delete /backup/home.cons -b b1
排除项
可以通过命令行传递 --exclude GLOB
选项到操作文件的命令中,包括 backup
、restore
、ls
和 list-source
。
排除模式开头的 /
将其锚定到备份树的顶部(而不是文件系统的根目录)。**
递归匹配任意数量的目录。 *.o
匹配树中的任何位置。
--exclude-from
从文件中读取排除模式,每行一个,忽略前导和尾随空白,并跳过以 #
开头的注释行。
语法来自 Rust globset 包。
带有 CACHEDIR.TAG
标记的目录会自动从备份中排除。
S3 支持
从 23.9 版本开始,Conserve 支持将备份存储在 Amazon S3 上。AWS IAM 凭据从标准来源读取:环境、配置文件,或者在 EC2 上,从实例元数据服务。
可以通过传递 cargo install --no-default-features
禁用 S3 支持。(如果未使用,则不会产生运行时影响,但会增加很多构建时依赖。)
要使用此功能,只需指定存档位置的 S3 URL。桶必须已经存在。
conserve init s3://my-bucket/
conserve backup s3://my-bucket/ ~
文件将写入 INTELLIGENT_TIERING
存储类。
(此功能应在 API 兼容的服务上工作,但尚未测试;欢迎提供使用经验。)
安装
要构建 Conserve,您需要 Rust 和一个可以由 Rust 使用的 C 编译器。
要从 crates.io 安装最新版本,请运行
cargo install conserve
要从 git 检出安装,请运行
cargo install -f --path .
在 nightly Rust 中,仅在 x86_64 架构上,您可以通过
cargo +nightly install -f --path . --features blake2-rfc/simd_asm
Arch Linux
yay -S conserve
更多文档
Windows 上的性能
Windows Defender 和 Windows 搜索索引可能会严重减慢任何进行密集型文件 I/O 的程序,包括 Conserve。我建议您从这两个系统中排除备份目录。
项目状态
Conserve 已经达到一个合理的成熟度;格式是稳定的,基本功能已完善。我已经将其用作主要备份系统一年多。仍然有空间进行几个性能改进和功能扩展。
当前的数据格式(称为“0.6”)将在未来至少两年内可读。
请注意,Conserve 是作为一个兼职的非商业项目开发的,因此无法保证支持或可靠性。欢迎提交错误报告,但我不能保证它们将在任何特定的时间框架内得到解决。
许可证和非保证条款
版权所有 2012-2023 Martin Pool。
本程序是免费软件;您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它;许可证的第2版,或者(根据您的选择)任何较新版本。
本程序的分发是希望它将是有用的,但没有任何保证;甚至没有关于其商业性或针对特定目的的适用性的暗示性保证。有关详细信息,请参阅GNU通用公共许可证。
依赖关系
~16–36MB
~531K SLoC