From d0f666cbf23fa5e76122a926732a2aa267738ca0 Mon Sep 17 00:00:00 2001 From: kneutron <50146127+kneutron@users.noreply.github.com> Date: Tue, 20 Jun 2023 10:02:55 -0500 Subject: [PATCH] Create safe-dd.sh --- safe-dd.sh | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 safe-dd.sh diff --git a/safe-dd.sh b/safe-dd.sh new file mode 100644 index 0000000..669af24 --- /dev/null +++ b/safe-dd.sh @@ -0,0 +1,31 @@ +#!/bin/bash + +# REF: https://distrowatch.com/weekly.php?issue=20230619#tips +# Some mods by kneutron 2023Jun + +# WRAPPER - This script invokes the dd command to copy a file. +# It first checks to make sure the target file (of) is not mounted. +# Warning, this may not work with device names containing a space. + +if [ $# -lt 2 ] +then + echo "Please provide an input file and an output file." + exit 1 +fi + +start=$(echo $@ | sed 's/of=/\^/') +end=$(echo $start | cut -f 2 -d '^') +target=$(echo $end | cut -f 1 -d ' ') + +echo "Checking $target" +df | grep $target +if [ $? -eq 0 ] +then + echo "Output file $target is mounted. Refusing to continue." + exit 2 +fi + +echo "Executing nice dd $@ status=progress" +time /usr/bin/dd $@ bs=1M status=progress +sync +echo "$(date) - Finished writing and sync."