#!/bin/bash
# Еженедельная проверка целостности: перечитывает весь HDD и сверяет хэши
#   current/  — с хэшами OneDrive (ловит битые/недокачанные/лишние файлы)
#   archive/  — с сохранёнными манифестами (ловит порчу данных на диске)
set -uo pipefail
ROOT=/mnt/backup/onedrive
TS=$(date +%F_%H%M)
LOG="$ROOT/logs/verify-$TS.log"
mountpoint -q /mnt/backup || { echo "/mnt/backup не смонтирован — пропуск"; exit 1; }
rc=0

rclone check onedrive: "$ROOT/current" --exclude "/Personal Vault/**" \
  --checkers 8 --combined "$ROOT/logs/verify-$TS.current.txt" \
  --log-file "$LOG" --log-level NOTICE || rc=1

for m in "$ROOT"/manifests/archive-*.qxh; do
  [ -e "$m" ] || continue
  d=$(basename "$m" .qxh); d=${d#archive-}
  rclone checksum quickxor "$m" "$ROOT/archive/$d" --log-file "$LOG" --log-level NOTICE || { echo "архив $d: несовпадение"; rc=1; }
done

grep -vc "^=" "$ROOT/logs/verify-$TS.current.txt" | xargs echo "расхождений в current:"
[ $rc -eq 0 ] && echo "OK: целостность подтверждена" || echo "ЕСТЬ РАСХОЖДЕНИЯ — см. $LOG и verify-$TS.current.txt"
exit $rc
