5个版本
0.1.4 | 2020年6月16日 |
---|---|
0.1.3 | 2019年5月23日 |
0.1.2 | 2019年4月28日 |
0.1.1 | 2019年4月28日 |
0.1.0 | 2019年4月28日 |
2184 在 编码 中
每月下载 29 次
75KB
1K SLoC
Arq
Arq是一个库,用于简化与由Arqbackup(程序)备份的文件的交互。
目前它仅支持由Arq(程序)4.5及以上版本生成的文件。
在其当前状态下,该库允许读取文件,但不能写入,因此无法使用此库完全替代Arq(程序)。
如果您正在寻找恢复由Arq(程序)备份的文件的方法,可以使用evu,它就是使用此库构建的。
重要提示
仅支持相当新的文件格式版本(截至2019/04/28)
- encryptionv3.dat
- CommitV012
- TreeV022
- XAttrSetV002
lib.rs
:
Arq提供了一种与Arq备份数据格式交互的方法,如他们在arq_data_format.txt中所述。
注意:大量的文档,特别是描述数据格式的那部分,来自https://arqbackup.com。所有的赞誉都应归功于那些人。
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
arq = "0.1"
示例
- 读取计算机信息条目
extern crate arq;
let reader = std::io::Cursor::new("<plist version=\"1.0\">
<dict>
<key>userName</key>
<string>someuser</string>
<key>computerName</key>
<string>somecomputer</string>
</dict>
</plist>");
let data = arq::computer::ComputerInfo::new(reader, "someuuid".to_string()).unwrap();
assert_eq!(data.computer_name, "somecomputer".to_string());
assert_eq!(data.user_name, "someuser".to_string());
assert_eq!(data.uuid, "someuuid".to_string());
- 读取树
注意:通常从文件中读取这些内容,而不是像这里显示的那样直接使用。
let tree_bytes = [0, 0, 2, 182, 159, 84, 114, 101, 101, 86, 48, 50, 50, 0, 1, 0, 30, 255, 11, 1, 245, 0, 0, 0, 20, 0, 0, 65, 237, 0, 0, 0, 0, 92, 197, 219, 103, 0, 0, 0, 0, 16, 90, 33, 177, 75, 0, 1, 132, 2, 77, 81, 191, 0, 0, 0, 4, 28, 0, 15, 48, 0, 3, 17, 16, 31, 0, 193, 92, 197, 219, 84, 0, 0, 0, 0, 48, 246, 52, 114, 17, 0, 67, 0, 0, 2, 1, 9, 0, 145, 8, 115, 111, 109, 101, 102, 105, 108, 101, 16, 0, 17, 2, 6, 0, 2, 2, 0, 20, 1, 35, 0, 244, 30, 40, 100, 97, 56, 97, 48, 48, 51, 53, 55, 54, 52, 51, 100, 52, 56, 49, 98, 53, 98, 52, 54, 99, 57, 100, 99, 57, 99, 52, 49, 50, 55, 55, 98, 51, 53, 98, 57, 101, 56, 53, 1, 0, 0, 0, 53, 0, 6, 2, 0, 22, 12, 11, 0, 15, 2, 0, 13, 4, 3, 1, 41, 129, 164, 3, 1, 60, 92, 158, 217, 58, 0, 5, 103, 0, 5, 9, 0, 146, 0, 1, 0, 0, 4, 2, 77, 81, 220, 11, 0, 2, 2, 0, 5, 22, 1, 3, 67, 0, 5, 16, 0, 50, 89, 212, 77, 34, 0, 85, 0, 8, 0, 0, 16, 182, 0, 177, 10, 116, 111, 112, 95, 102, 111, 108, 100, 101, 114, 89, 0, 15, 16, 1, 3, 255, 25, 99, 48, 53, 55, 49, 53, 51, 55, 100, 53, 55, 100, 57, 52, 56, 56, 49, 54, 52, 51, 48, 51, 57, 53, 48, 100, 102, 100, 101, 100, 53, 99, 98, 54, 99, 102, 99, 100, 50, 48, 16, 1, 3, 19, 39, 121, 0, 15, 2, 0, 116, 80, 0, 0, 0, 0, 0];
let tree = arq::tree::Tree::new(&tree_bytes, arq::compression::CompressionType::LZ4).unwrap();
assert_eq!(tree.version, 22);
有关更复杂的示例,请参阅https://github.com/nlopes/evu上使用此库构建的命令行工具(evu
)。
依赖项
~15MB
~354K SLoC