4 个版本
使用旧的 Rust 2015
0.2.2 | 2016年1月9日 |
---|---|
0.2.1 | 2016年1月8日 |
0.2.0 | 2015年12月18日 |
0.1.0 | 2015年10月19日 |
在 文件系统 中排名 #1591
每月下载量 23 次
用于 ruplicity-console
435KB
2K SLoC
ruplicity
Rust 库,用于探索 冗余性备份。
安装
将相应的条目添加到您的 Cargo.toml
依赖项中
[dependencies]
ruplicity = "0.2"
并将 extern crate ruplicity
添加到您的 crate 根目录。
动机
为什么我选择在 Rust 中实现冗余性备份读取器?它与冗余性有什么区别?
- 性能。在笔记本电脑上,使用 ruplicity 列出 195 GB 备份中文件的列表需要 9.1 秒,而使用 duplicity 需要 166 秒,并且缓存为空。当将备份签名缓存在硬盘驱动器中时,时间降至 33 秒。这仍然是一个巨大的性能提升,但我相信我们还可以大幅提高时间。
- 提供一个易于使用的库来实现诸如 命令行工具 和 fuse 文件系统(直接在文件系统中挂载备份,这在 duplicity 中不容易实现)等功能。
这个库不旨在取代 duplicity,因为它不提供实际的备份/还原功能,并且它没有 duplicity 具有的许多后端。然而,如果您需要它们,请随时贡献。
示例
此示例演示了打开存储在本地目录中的备份,并打印每个备份快照中的文件。
extern crate ruplicity;
use ruplicity::Backup;
use ruplicity::backend::local::LocalBackend;
use ruplicity::time_utils::TimeDisplay;
fn main() {
// use the local backend to open a path in the file system containing a backup
let backend = LocalBackend::new("tests/backups/single_vol");
let backup = Backup::new(backend).unwrap();
for snapshot in backup.snapshots().unwrap() {
println!("Snapshot {}", snapshot.time().into_local_display());
println!("{}", snapshot.entries().unwrap());
}
}
查看文档以获取高级用法和示例。
贡献
欢迎贡献!还有很多功能要实现。最重要的是
- 改进代码;我需要一些经验丰富的 Rustaceans 的反馈 :);
- 改进性能(因为总是有提升的空间);
- 实现新功能,例如 读取备份文件内容,以及新的后端(例如 Dropbox、Azure、FTP 等),就像 duplicity 一样;
- 支持加密备份;当实现 Rust GPG 库时,这实际上更加可行。
许可证
此包根据 MIT 许可证分发。有关详细信息,请参阅 LICENSE。
对于那些正在疑惑的人:即使 duplicity 项目采用 GNU GPL v2 许可,您也可以使用这个许可吗?是的,因为该项目没有使用 duplicity 的任何一行代码,我想使用宽松的许可来简化 crate 的使用。
依赖项
约 6MB
约 111K SLoC