Бэкап серверов fr1/ru1 на rpi: сервер шифрует age открытым ключом, малина только хранит
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
e645377916
commit
7d0a891793
@@ -0,0 +1,19 @@
|
||||
#!/bin/bash
|
||||
# Выгрузка бэкапа ru1 для rpi. Forced command в ~mik/.ssh/authorized_keys:
|
||||
# restrict,command="sudo -n /usr/local/sbin/backup-export" <ключ server-backup@rpi>
|
||||
# В stdout — tar | zstd | age (открытый ключ; закрытый только у владельца вне малины).
|
||||
# В stderr последней строкой — "SHA256 <hex>" шифротекста.
|
||||
# Главное здесь — ~mik/easy-rsa: CA OpenVPN; без него — перевыпуск всех клиентских конфигов.
|
||||
set -euo pipefail
|
||||
PUB=age1qfsgzyglv0vmq4kskg888hzgq032mry5kxz9kptkvzsrz0fz0v7q6kxwk2
|
||||
tmp=$(mktemp -d /tmp/backup-export.XXXXXX); trap 'rm -rf "$tmp"' EXIT
|
||||
cd /
|
||||
# tar exit 1 = «файл изменился при чтении» — не ошибка
|
||||
{ rc=0; tar --numeric-owner --ignore-failed-read --warning=no-file-changed -cf - \
|
||||
--exclude=home/mik/badvpn --exclude=home/mik/telemt-build --exclude=home/mik/cloudflared.deb \
|
||||
--exclude=home/mik/.claude --exclude=home/mik/.cache --exclude='home/mik/*.log' --exclude=home/mik/nohup.out \
|
||||
etc opt srv usr/local home/mik root var/spool/cron 2>/dev/null || rc=$?; [ $rc -le 1 ] || exit $rc; } \
|
||||
| zstd -3 -T0 -q | /usr/local/bin/age -r "$PUB" | tee >(sha256sum > "$tmp/sum")
|
||||
# процесс-подстановка живёт отдельно от конвейера — ждём, пока sha256sum допишет итог
|
||||
for _ in $(seq 300); do [ -s "$tmp/sum" ] && break; sleep 0.1; done
|
||||
echo "SHA256 $(cut -d' ' -f1 "$tmp/sum")" >&2
|
||||
Reference in New Issue
Block a user