etchr

Crates.ioetchr
lib.rsetchr
version1.0.0
created_at2025-11-15 13:09:26.002388+00
updated_at2025-11-15 13:09:26.002388+00
descriptionA fast, safe, and interactive CLI for flashing disk images.
homepage
repositoryhttps://github.com/sskartheekadivi/etchr
max_upload_size
id1934330
size67,140
Sai Sree Kartheek Adivi (sskartheekadivi)

documentation

README

etchr

A fast, safe, and interactive CLI for flashing disk images.

Tired of cryptic `dd` commands? Worried you'll accidentally wipe your system drive?
etchr is a modern, reliable tool that makes flashing SD cards and USB drives simple and safe, right from your terminal.


✨ Features

  • πŸ›‘οΈ Interactive Safety First etchr doesn't let you pass a device path. Instead, it shows an interactive menu of only removable devices, making it nearly impossible to flash your system drive by mistake.

  • πŸš€ Decompression On-the-Fly Automatically decompresses .gz, .xz, and .zst images while writing. No need to extract them first.

  • ⚑ Blazingly Fast Optimized for high-speed, unbuffered I/O to flash images as fast as your hardware allows, often faster than GUI-based tools.

  • βœ… Guaranteed Verification Automatically verifies the disk with a SHA256 hash after writing to ensure the data is perfect, bit-for-bit. (You can skip this with --no-verify).

  • πŸ“Š Detailed Progress A beautiful progress bar shows your speed, data transferred, and ETA, so you're never left guessing.

  • πŸ›‘ Graceful Cancel Press Ctrl+C at any time to safely cancel the operation. etchr cleans up after itself, leaving no temporary files or half-written states.

πŸš€ Installation

1. With cargo (Recommended)

This is the easiest way to get the latest version if you have the Rust toolchain.

cargo install etchr

2. From GitHub Releases

Download the pre-compiled binary or .deb package from the Releases page.

# For .deb packages
sudo dpkg -i ./etchr_1.0.0_amd64.deb

3. From Source

git clone [https://github.com/sskartheekadivi/etchr.git](https://github.com/sskartheekadivi/etchr.git)
cd etchr
cargo build --release
sudo cp ./target/release/etchr /usr/local/bin/

πŸ’‘ Usage

etchr is designed to be simple. The commands guide you.

etchr list

List all detected removable devices and their mount points.

$ etchr list
Found 1 removable devices:

  DEVICE       NAME                 SIZE LOCATION
  ----------   -----------------   ----- ----------
  /dev/sdd     Cruzer Blade       29.5 GB /media/user/USB_DISK

etchr write

Write an image to a device. You will be prompted to select a target from a safe, interactive list.

# You can use compressed or uncompressed images
etchr write ~/Downloads/raspberry-pi-os.img.xz

This will start the interactive prompt:

βœ” Select the target device to WRITE to Β· /dev/sdd     29.5 GB [Mounted at /media/user/USB_DISK]
WARNING: This will erase all data on 'sdd' (29.5 GB).
  Device: /dev/sdd
  Image:  /home/user/Downloads/raspberry-pi-os.img.xz

βœ” Are you sure you want to proceed? Β· yes

Writing image...
Decompress [β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– ] 1.53 GiB (150.37 MiB/s)
Writing    [β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– ] 8.00 GiB (90.12 MiB/s)
Verifying  [β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– ] 8.00 GiB (133.33 MiB/s)

✨ Successfully flashed /dev/sdd with raspberry-pi-os.img.xz.

Options:

  • --no-verify: Skips the verification step after writing.

etchr read

Create an image file by reading an entire device. You will be prompted to select a source.

etchr read ~/Backups/my-sd-card-backup.img

This will start the interactive prompt:

βœ” Select the source device to READ from Β· /dev/sdd     29.5 GB [Mounted at /media/user/USB_DISK]
This will read 29.5 GB from 'sdd'.
  Device: /dev/sdd
  Output: /home/user/Backups/my-sd-card-backup.img

βœ” Are you sure you want to proceed? Β· yes

Reading    [β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– β– ] 29.5 GiB (100.0 MiB/s)

✨ Successfully read /dev/sdd to my-sd-card-backup.img.

πŸ—ΊοΈ Roadmap

etchr is already a powerful tool, but here's what's planned:

  • Smarter reading (e.g., only reading partitions, not the whole empty disk).
  • Multi-write: Flashing one image to multiple devices at once.
  • A (separate) optional GUI frontend.

Contributing

Contributions are welcome! Whether it's a bug report, a feature idea, or a pull request, feel free to open an issue or start a discussion.

License

This project is licensed under the MIT License.

Commit count: 0

cargo fmt