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
|