Skip to content

Instantly share code, notes, and snippets.

@rubenerd
Last active September 24, 2016 03:24
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rubenerd/222adbfbb66ca338686a67003c481485 to your computer and use it in GitHub Desktop.
Save rubenerd/222adbfbb66ca338686a67003c481485 to your computer and use it in GitHub Desktop.
Best-effort disk rescue using glorious ddrescue
#!/bin/sh
######
## Script to envoke ddrescue for data recovery
_source="$1" ## source block device
_name="$2" ## destination name
_extension="$3" ## iso (for cd/dvd) or img (for disks)
_sectorsize=512 ## 2048 (for cd/dvd) or 512 (for disks, default)
_help() {
printf "%s\n" "Use: rescue.sh <source device> <destination> <iso/img>" >&2;
exit 1;
}
## Check ddrescue installed
if ! `command -v ddrescue >/dev/null 2>&1`; then
printf "%s\n" "Dependency ddrescue not found." >&2;
exit 1;
fi
## Check number of arguments
[ $# -ne 3 ] && _help
## Set sector size
[ $_extension == "iso" ] && _sectorsize=2048
## Run ddrescue
ddrescue --direct --retry-passes=4 --sector-size $_sectorsize \
"$_source" "${_name}.$_type" "${_name}.log"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment