rpi: бэкап OneDrive на HDD + SMART/бэкап-метрики через pushgateway на fr1
- servers/rpi.md: новая домашняя Raspberry Pi 4 (Trixie, cloud-init), HDD 4 ТБ, грабли с питанием двух HDD от USB - stacks/rpi-backup: rclone sync с вечным архивом версий, еженедельная сверка хэшей, smartd, пуш SMART и статуса бэкапов - fr1: pushgateway (127.0.0.1:9091), приём по SSH через forced command ~/bin/pushgw-ingest, алерты группы rpi Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
3604e843c8
commit
d1269162e7
Executable
+30
@@ -0,0 +1,30 @@
|
||||
#!/bin/bash
|
||||
# OneDrive -> /mnt/backup. Ничего не удаляется навсегда:
|
||||
# current/ — точное зеркало OneDrive
|
||||
# archive/<время>/ — всё, что в OneDrive удалили или перезаписали (хранится вечно)
|
||||
# manifests/ — quickxor-хэши архивных файлов (для onedrive-verify)
|
||||
# logs/ — журнал каждого прогона: какие файлы скачаны/изменены/убраны в архив
|
||||
set -euo pipefail
|
||||
ROOT=/mnt/backup/onedrive
|
||||
TS=$(date +%F_%H%M)
|
||||
|
||||
mountpoint -q /mnt/backup || { echo "/mnt/backup не смонтирован — пропуск"; exit 1; }
|
||||
mkdir -p "$ROOT"/{current,archive,manifests,logs}
|
||||
LOG="$ROOT/logs/sync-$TS.log"
|
||||
|
||||
# rclone сам сверяет хэш каждого скачанного файла с хэшем OneDrive
|
||||
rclone sync onedrive: "$ROOT/current" \
|
||||
--backup-dir "$ROOT/archive/$TS" \
|
||||
--exclude "/Personal Vault/**" \
|
||||
--transfers 4 --checkers 8 \
|
||||
--retries 5 --low-level-retries 20 \
|
||||
--log-file "$LOG" --log-level INFO \
|
||||
--stats 10m --stats-one-line
|
||||
|
||||
if [ -d "$ROOT/archive/$TS" ]; then
|
||||
rclone hashsum quickxor "$ROOT/archive/$TS" > "$ROOT/manifests/archive-$TS.qxh"
|
||||
echo "в архив ушло: $(wc -l < "$ROOT/manifests/archive-$TS.qxh") файлов"
|
||||
fi
|
||||
|
||||
echo "OK: current=$(du -sh "$ROOT/current" | cut -f1), диск занят на $(df --output=pcent /mnt/backup | tail -1 | tr -d " ")"
|
||||
[ "$(df --output=pcent /mnt/backup | tail -1 | tr -dc 0-9)" -lt 90 ] || { echo "ВНИМАНИЕ: диск заполнен >90%"; exit 2; }
|
||||
Reference in New Issue
Block a user