15个不稳定版本 (6个重大变更)
0.7.3 | 2024年3月12日 |
---|---|
0.7.1 | 2023年11月20日 |
0.6.0 | 2023年7月19日 |
0.4.3 | 2023年3月3日 |
0.2.0 | 2022年9月2日 |
#166 in 文件系统
5,009 每月下载量
用于 ssstar-cli
250KB
3.5K SLoC
ssstar
从S3对象到tar存档以及从tar存档到S3对象的高度并发存档。
这是为 ssstar
CLI 提供动力的Rust库crate。如果您正在寻找 ssstar
命令行工具,请参阅 ssstar-cli
crate。
要创建包含S3对象的tar存档,实例化一个 CreateArchiveJob
# use ssstar::*;
# #[tokio::main]
# async fn main() -> Result<(), Box<dyn std::error::Error + Sync + Send + 'static>> {
// Write the archive to a local file
let target = TargetArchive::File("test.tar".into());
let mut builder = CreateArchiveJobBuilder::new(Config::default(), target);
// Archive all of the objects in this bucket
builder.add_input(&"s3://my-bucket".parse()?).await?;
let job = builder.build().await?;
job.run_without_progress(futures::future::pending()).await?;
# Ok(())
# }
目标存档可以写入本地文件、S3存储桶或任意的Tokio AsyncWrite
实现。有关详细信息,请参阅 TargetArchive
。
将tar存档恢复到对象存储同样简单
# use ssstar::*;
# #[tokio::main]
# async fn main() -> Result<(), Box<dyn std::error::Error + Sync + Send + 'static>> {
// Read the archive from a local file
let source = SourceArchive::File("test.tar".into());
// Extract the archive to an S3 bucket, prepending a `foo/` prefix to every file path in
// the archive
let target = "s3://my-bucket/foo/".parse::<url::Url>()?;
let mut builder = ExtractArchiveJobBuilder::new(Config::default(), source, target).await?;
// Extract only text files, in any directory, from the archive
builder.add_filter("**/*.txt")?;
let job = builder.build().await?;
job.run_without_progress(futures::future::pending()).await?;
# Ok(())
# }
依赖关系
~30–42MB
~625K SLoC