#!/bin/bash
# SAO LƯU REDIS máy key (26/09/2026) — chủ dự án để cổng 51200 mở cho kết nối từ xa;
# lỡ ai dò ra mật khẩu và xoá sạch dữ liệu license thì khôi phục được từ đây.
#
# Chép /var/lib/redis/dump.rdb (Redis tự ghi: save 3600 1 / 300 100 / 60 10000),
# KIỂM TOÀN VẸN bằng redis-check-rdb trước khi cất, nén gzip, giữ GIU_NGAY ngày.
# Chạy mỗi giờ bằng sao-luu-redis.timer.
#
# KHÔI PHỤC (chọn bản trước thời điểm sự cố):
#   sudo systemctl stop redis-server
#   sudo cp /var/lib/redis/dump.rdb /root/dump.truoc-khoi-phuc.rdb
#   sudo sh -c 'gunzip -c /var/backups/redis/dump-YYYYmmdd-HHMM.rdb.gz > /var/lib/redis/dump.rdb'
#   sudo chown redis:redis /var/lib/redis/dump.rdb && sudo chmod 660 /var/lib/redis/dump.rdb
#   sudo systemctl start redis-server
set -euo pipefail

NGUON=/var/lib/redis/dump.rdb
DICH=/var/backups/redis
GIU_NGAY=14

install -d -m 700 "$DICH"
TAM=$(mktemp "$DICH/.tam.XXXXXX")
trap 'rm -f "$TAM" "$TAM.gz"' EXIT

cp --preserve=timestamps "$NGUON" "$TAM"          # chép trước rồi mới kiểm: Redis có thể ghi đè bản gốc giữa chừng
if ! redis-check-rdb "$TAM" >/dev/null 2>&1; then
    echo "LOI: dump.rdb hong (redis-check-rdb bao loi) — KHONG cat ban nay" >&2
    exit 1
fi
gzip -9 "$TAM"
TEN="$DICH/dump-$(date +%Y%m%d-%H%M).rdb.gz"
mv "$TAM.gz" "$TEN"
chmod 600 "$TEN"
find "$DICH" -maxdepth 1 -name 'dump-*.rdb.gz' -mtime +"$GIU_NGAY" -delete
echo "Da sao luu $(basename "$TEN") ($(stat -c %s "$TEN") byte), dang giu $(find "$DICH" -maxdepth 1 -name 'dump-*.rdb.gz' | wc -l) ban"
