1 stable release
Uses new Rust 2024
| 1.0.0 | Nov 15, 2025 |
|---|
#433 in Hardware support
42KB
750 lines
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
etchrdoesn'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.zstimages 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+Cat any time to safely cancel the operation.etchrcleans 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.
Dependencies
~14β21MB
~414K SLoC