23 lines
1.5 KiB
Bash
23 lines
1.5 KiB
Bash
#!/bin/bash
|
|
# R-1107 — restic 0.19.1 vs 0.18.1 vs 0.14.0 on demo-hp's REAL store, read-only (rx.sh: --no-lock, read verbs only).
|
|
# Runs in the guest. Each snapshot is restored by every version; the tree hashes must agree.
|
|
set -u
|
|
I=gitea.dooplex.hu/admin/felhom-controller
|
|
declare -A IMG=([0.14.0]=$I:0.322.0 [0.18.1]=$I:0.323.0 [0.19.1]=$I:0.324.0-rc.1)
|
|
for v in 0.14.0 0.18.1 0.19.1; do docker image inspect ${IMG[$v]} >/dev/null 2>&1 || docker pull -q ${IMG[$v]} >/dev/null; done
|
|
NEW19=$(/root/rx.sh ${IMG[0.19.1]} snapshots --tag bookstack --json 2>/dev/null | python3 -c 'import json,sys; s=[x for x in json.load(sys.stdin) if x.get("program_version","").startswith("restic 0.19")]; print(s[-1]["short_id"] if s else "")')
|
|
echo "snapshots: 0.14.0-made f3f16e0e (bookstack), 0.18.1-made 6d9dd607 (rallly), 0.19.1-made $NEW19 (bookstack, newest)"
|
|
for snap in f3f16e0e 6d9dd607 $NEW19; do
|
|
line="$snap:"
|
|
for v in 0.14.0 0.18.1 0.19.1; do
|
|
d=/tmp/r1105/x-$snap-$v; rm -rf $d
|
|
if /root/rx.sh ${IMG[$v]} restore $snap --target $d >/dev/null 2>&1; then
|
|
h=$(cd $d && find . -type f -exec sha256sum {} + | sort -k2 | sha256sum | cut -c1-16); n=$(find $d -type f | wc -l)
|
|
line="$line restic $v → $h ($n files)"
|
|
else line="$line restic $v → FAILED"; fi
|
|
rm -rf $d
|
|
done
|
|
echo "$line"
|
|
done
|
|
echo "store listed by each: $(for v in 0.14.0 0.18.1 0.19.1; do printf '%s=%s ' $v $(/root/rx.sh ${IMG[$v]} snapshots --json 2>/dev/null | python3 -c 'import json,sys;print(len(json.load(sys.stdin)))'); done)"
|