Skip to content
Snippets Groups Projects
Commit 799c3b6b authored by Julian Rother's avatar Julian Rother
Browse files

Upload check_dd_partially

parent 6a23baac
No related branches found
No related tags found
No related merge requests found
#!/bin/bash
usage="$(basename "$0") [-v] [-q] n src des -- verifies per sha256sum of n(>=2) equidistant distributed blocks of size 4096kB, that src was correctly written to des
$(basename "$0") -h
where:
-v verbose: prints the sha256sums
-q quite: suppresses the output of the result,
the return-Code remains as reponse
-h prints this help message"
quite=false;
verbose=false;
printHelp=false;
for opt in "$@"
do
case $opt in
-v) verbose=true ; shift 1 ;;
-q) quite=true ; shift 1 ;;
-h) printHelp=true ; shift 1 ;;
-?) printHelp=true ; shift 1 ;;
esac
done
if [ "$printHelp" = true ] || [ $# -ne 3 ] || [ $1 -le 1 ]
then
echo "$usage";
exit -1;
fi
n=$1
src=$2;
des=$3;
lengthSrc=$(($(stat -c '%s' $src) / 4096)); # length of the source (in 4096kB)
if [ "$verbose" = true ]
then
echo "length of the source (in 4096kB): $lengthSrc"
fi
failed=false;
for i in $(seq 0 $(($n-1)))
do
offset=$(echo "$i*($lengthSrc-1)/($n-1)" | bc );
if [ "$verbose" = true ]
then
echo "comparing blocks at offset $offset"
fi
sha256sumSrc=$(dd if=$src skip=$offset bs=4096 count=1 status=none | sha256sum)
if [ "$verbose" = true ]
then
echo "sha256sum of the source: $sha256sumSrc"
fi
sha256sumDes=$(dd if=$des skip=$offset bs=4096 count=1 status=none | sha256sum)
if [ "$verbose" = true ]
then
echo "sha256sum of the destination: $sha256sumDes"
fi
if [ "$sha256sumSrc" != "$sha256sumDes" ]
then
failed=true;
break;
fi
done
if [ "$failed" = false ]
then
if [ "$quite" = false ]
then
echo "OK!";
fi
exit 0;
else
if [ "$quite" = false ]
then
echo "FAILED!";
fi
exit 1;
fi
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment