#!/bin/sh # Image Transfer: a simple script to transfer raw images to/from removable media # in a safer manner # Depends on basename, dd, fzf # Usage: it.sh w|r image-file # Created by Luxferre in 2026, released into public domain get_removables() { for ddir in /sys/block/*; do if grep -q 1 ${ddir}/removable; then dbase="$(basename $ddir)" dvendor="$(cat ${ddir}/device/vendor)" dmodel="$(cat ${ddir}/device/model)" printf "%s\t%s %s\n" "$dbase" "$dvendor" "$dmodel" fi done } DEF_DD_OPTS="status=progress" [ -z "$DD_OPTS" ] && DD_OPTS="bs=2M" [ -z "$SUDO" ] && SUDO="sudo" if [ -z "$1" ]; then echo "No operation! Select w or r" exit 1 fi if [ -z "$2" ]; then echo "No target file specified!" exit 1 fi TARGET_DRIVE="/dev/$(get_removables | fzf --prompt "Select the drive: " | cut -f 1)" RUN_COMMAND="" if [ "$1" = "w" ]; then RUN_COMMAND="dd if=$2 of=$TARGET_DRIVE $DEF_DD_OPTS $DD_OPTS" if [ ! -w $TARGET_DRIVE ]; then RUN_COMMAND="$SUDO $RUN_COMMAND" fi elif [ "$1" = "r" ]; then RUN_COMMAND="dd of=$2 if=$TARGET_DRIVE $DEF_DD_OPTS $DD_OPTS" if [ ! -r $TARGET_DRIVE ]; then RUN_COMMAND="$SUDO $RUN_COMMAND" fi else echo "Invalid operation! Select w or r" exit 1 fi echo "Starting the operation..." $RUN_COMMAND && echo "Operation successful!" || echo "Operation completed with errors!"