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

MIT 许可证

435KB
2K SLoC

ruplicity

Build Status Build status Coverage Status

Rust 库,用于探索 冗余性备份

API 文档

安装

将相应的条目添加到您的 Cargo.toml 依赖项中

[dependencies]
ruplicity = "0.2"

并将 extern crate ruplicity 添加到您的 crate 根目录。

动机

为什么我选择在 Rust 中实现冗余性备份读取器?它与冗余性有什么区别?

  1. 性能。在笔记本电脑上,使用 ruplicity 列出 195 GB 备份中文件的列表需要 9.1 秒,而使用 duplicity 需要 166 秒,并且缓存为空。当将备份签名缓存在硬盘驱动器中时,时间降至 33 秒。这仍然是一个巨大的性能提升,但我相信我们还可以大幅提高时间。
  2. 提供一个易于使用的库来实现诸如 命令行工具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