ssstar
Highly concurrent archiving of S3 objects to and from tar archives.
This is the Rust library crate which powers the ssstar CLI. If you're looking for the
ssstar command line utility, see the ssstar-cli
crate.
To create a tar archive containing S3 objects, instantiate a CreateArchiveJob:
# use ssstar::*;
# #[tokio::main]
# async fn main() -> Result<(), Box<dyn std::error::Error + Sync + Send + 'static>> {
let target = TargetArchive::File("test.tar".into());
let mut builder = CreateArchiveJobBuilder::new(Config::default(), target);
builder.add_input(&"s3://my-bucket".parse()?).await?;
let job = builder.build().await?;
job.run_without_progress(futures::future::pending()).await?;
# Ok(())
# }
Target archives can be written to a local file, an S3 bucket, or an arbitrary Tokio AsyncWrite implementation. See
[TargetArchive] for more details.
Restoring a tar archive to object storage is similarly straightforward:
# use ssstar::*;
# #[tokio::main]
# async fn main() -> Result<(), Box<dyn std::error::Error + Sync + Send + 'static>> {
let source = SourceArchive::File("test.tar".into());
let target = "s3://my-bucket/foo/".parse::<url::Url>()?;
let mut builder = ExtractArchiveJobBuilder::new(Config::default(), source, target).await?;
builder.add_filter("**/*.txt")?;
let job = builder.build().await?;
job.run_without_progress(futures::future::pending()).await?;
# Ok(())
# }