diff options
-rwxr-xr-x | scripts/files_integrity_croncheck.sh | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/scripts/files_integrity_croncheck.sh b/scripts/files_integrity_croncheck.sh new file mode 100755 index 0000000..0cf99d8 --- /dev/null +++ b/scripts/files_integrity_croncheck.sh @@ -0,0 +1,32 @@ +#!/bin/bash + +set -eu + +mail='user@example.com' +output_dir='/tmp/md5sums' +dirs=( + "$HOME/todo" + #/exemples/to/monitor +) + +diff_two_last_by_mail() +{ + if [ $# -lt 2 ]; then + return # nothing to done then not at least two files to compare + fi + + diff -u <(zcat "$1") <(zcat "$2") \ + | ifne mail -s "Changes in md5sums between $1 and $2" "$mail" +} + +mkdir -p "$output_dir" +for dir in "${dirs[@]}"; do + basefn="$(printf "%s\n" "$dir" | sed 's:/:_:g;s/^_//;s/_$//')" + outputfn="$output_dir/${basefn}_$(date +%F_%T).md5sum.gz" + + find "$dir"/ -type f -print0 | sort -z | xargs -0 md5sum -b \ + | gzip -9 > "$outputfn" + + diff_two_last_by_mail \ + $(find "$output_dir"/ -name "${basefn}*.md5sum.gz" | sort | tail -n 2) +done |