#car #ipfs #file #chunking #split #multiple #single

carbites

CAR文件分割实现(Rust语言)

3个版本

0.1.2 2023年5月23日
0.1.1 2023年5月6日
0.1.0 2023年4月30日

#11 in #chunking

41 每月下载量

MIT/Apache

345KB
458

carbites

CAR文件进行分块。将单个CAR分割成多个CAR。

原始实现来自go-carbites

用法

Carbites支持树遍历策略

树遍历 - 遍历DAG,将子图打包到每个输出的CAR文件中。每个CAR文件都有相同的根CID,但包含DAG的不同部分。从根节点遍历DAG,按顺序解码每个块并提取链接,以确定要包含在每个CAR中的子图。

use carbites::{new_splitter, CarSplitter, Strategy};
use std::io::Write;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let file = std::fs::File::open("examples/test.car")?;
    let mut splitter = new_splitter(Strategy::Treewalk, file, 1024);

    let mut i = 0;
    while let Some(chunk) = splitter.next_chunk()? {
        let mut file = std::fs::File::create(format!("target/chunk-{}.car", i))?;
        file.write(&chunk)?;
        i += 1;
    }

    Ok(())
}

待办事项

  • 添加对简单策略的支持(见下文)

简单 - 快速但简单,只有第一个CAR输出有根CID,后续的CAR有占位符“空”CID。第一个CAR输出在头部有根,后续的CAR有空的根CID bafkqaaa推荐

许可证

许可协议为以下之一

任选其一。

依赖项

~3MB
~60K SLoC