Skip to content
Snippets Groups Projects
Select Git revision
  • de3cc072c243bdc52fbf9528d5ad3df3d8864b5c
  • master default protected
  • intros
  • live_sources
  • bootstrap4
  • modules
6 results

sorter.py

Blame
  • Forked from Video AG Infrastruktur / website
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    check_dd_partially 1.59 KiB
    #!/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