aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/files_integrity_croncheck.sh
blob: 0cf99d87d7dd9fd6633e1049317fc3822f804016 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
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