diff options
Diffstat (limited to 'misc/verifoo')
| -rwxr-xr-x | misc/verifoo | 110 | 
1 files changed, 0 insertions, 110 deletions
diff --git a/misc/verifoo b/misc/verifoo deleted file mode 100755 index 34089cb..0000000 --- a/misc/verifoo +++ /dev/null @@ -1,110 +0,0 @@ -#!/bin/sh - -help() { -cat << HELPDOC -usage: $(basename "$0") [options] [file]... - -OPTIONS: -  -h, --help                show this menu -  -c, --check               read and verify checksums from file -  -r, --recursive           produce a checksum for all files in a directory recursively -  --recursive-sum           produce a checksum for a directory. sensitive to filenames -  --recursive-sum-nopath    produce a checksum for a directory. not sensitive to filenames/placement -  -s, --silent              produce no output to stderr -  -v, --verbose             output a progress bar of hash progress if pv is avaliable (wip) - -MODES: -  -S, --sha                 use sha1sum for checksums -  -M, --md5                 use md5sum for checksums -  -X, --xxh                 use xxhsum for checksums (default if avaliable with sha1sum as fallback) -HELPDOC -} - -# set defaults -cat="pv -F'%r_[%b]_[%t]_[%e]_%p'" -! command -v pv >/dev/null && cat=cat - -hash=xxhsum -! command -v xxhsum >/dev/null && hash=sha1sum - -hashfiles="" -verbose=1 -recursive="" -outputfile="" - -while true; do -	case "$1" in -		-c|--check) [ -n "$2" ] && hashfiles="$hashfiles $2" && shift ;; -		-s|--silent)  verbose=0 ;; -		-v|--verbose) verbose=2 ;; -		--recursive|-r)         recursive=3 ;; -		--recursive-sum)        recursive=2 ;; -		--recursive-sum-nopath) recursive=1 ;; -		-S|--sha) hash=sha1sum ;; -		-M|--md5) hash=md5sum  ;; -		-X|--xxh) hash=xxhsum  ;; -		-h|--help) help; exit 0 ;; -		-*)        help; exit 1 ;; -		*) break ;; -	esac -	shift -done - -case $verbose in -	0) cat=cat ;; -	1) cat=cat ;; -esac - -# run hash -while [ -n "$1" ]; do -	if [ -d "$1" ]; then # is directory -		# check if using -r flag -		case "$recursive" in -			1) -				# get hash of all files, sort hashes, hash hashes -				# TODO make pv work in this mode - -				#catd="$cat" -				#if [ $verbose -ge 2 ] && [ "$catd" != "cat" ]; then -				#	total_files=$(du -a "$1" | wc -l) -				#	catd="pv -l -s$total_files -F'[%b/$total_files]_[%t]_[%e]_%p'" -				#fi -				#sum=`find "$1" -type f -print0 | xargs -r0 $hash | $catd | cut -d' ' -f1 | sort | $hash | cut -d' ' -f1` 2>/dev/null -				sum=`find "$1" -type f -print0 | xargs -r0 $hash | cut -d' ' -f1 | sort | $hash | cut -d' ' -f1` 2>/dev/null -				echo "r/$sum  $1" -			;; -			2) -				# hash sorted filenames -				# sort all filenames w/ full path and hash -				# hash those sums together -				# `tar -c -f - "$1" | $hash` is a good idea but it doesn't work since changes to the fs affect tar -				filehash=`find "$1" -type f -print0 | sort -z | xargs -r0 $cat | $hash | cut -d' ' -f1` -				pathhash=`find "$1" -printf "%P\0" | sort -z | $hash | cut -d' ' -f1` -				sum=`printf "$filehash$pathhash" | $hash | cut -d' ' -f1` -				echo "p/$sum  $1" -			;; -			3) -				# sort files and hash each one in sequence -				# TODO make pv work in this mode -				find "$1" -type f -print0 | sort -z | xargs -r0 $hash -			;; -			*) -				[ $verbose -ge 1 ] && echo "-r not specified for directory $1. Exiting" -				exit 1 -			;; -		esac -	else # is file -		if ! [ -f "$1" ]; then -			[ $verbose -gt 1 ] && echo "File $1 does not exist. Exiting" -			exit 1 -		fi -		files="$1" - -		while [ -f "$2" ]; do -			files="$files\0$2" -			shift -		done -		printf "$files" | xargs -r0 $hash -	fi -	shift -done  | 
