Files
sh-goodies/it.sh
T

50 lines
1.3 KiB
Bash
Raw Normal View History

2026-02-01 14:45:28 +02:00
#!/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" "$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!"