From 799c3b6b5d2b63dd63f7eb0602275f70aa027ec0 Mon Sep 17 00:00:00 2001 From: Julian Rother <julianr@fsmpi.rwth-aachen.de> Date: Thu, 4 Oct 2018 22:50:49 +0200 Subject: [PATCH] Upload check_dd_partially --- Check/check_dd_partially | 76 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 Check/check_dd_partially diff --git a/Check/check_dd_partially b/Check/check_dd_partially new file mode 100644 index 0000000..57607d9 --- /dev/null +++ b/Check/check_dd_partially @@ -0,0 +1,76 @@ +#!/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 -- GitLab