# bsnap 🐈‍⬛

A multithreaded, incredibly resilient AWS EBS Snapshot Downloader tool. Converts AWS EBS Snapshots directly into raw disk images locally without having to spawn an EC2 instance, and handles sudden STS token expirations effortlessly.

## Features
- **Resilient**: Tracks downloaded blocks and completely survives `boto3` STS token expirations or manual `Ctrl+C`. Simply rerun the exact same command with your newly fetched credentials and it resumes instantly right where it left off!
- **Fast**: Multi-threaded over the `ebs` Direct APIs.
- **Gorgeous**: High-resolution ASCII cats 🐈‍⬛.

## Installation

```bash
pip install bsnap
```

## Quick Start

```bash
bsnap --snapshot-id snap-xxxxxxxxxxxxxxxxx --output-file ./my_volume.img
```

### Options
```text
  -h, --help            show this help message and exit
  --snapshot-id SNAPSHOT_ID
                        AWS EBS Snapshot ID (e.g., snap-0123456789abcdef0)
  --output-file OUTPUT_FILE
                        Path to the local output raw disk image
  --region REGION       AWS Region (optional)
  --state-file STATE_FILE
                        Path to state file for resumption
  --workers WORKERS     Number of concurrent threads (default: 16)
  --log-file LOG_FILE   Path to verbose log output
  --no-verify-ssl       Disable SSL certificate verification
```
