#!/bin/bash
# 실습 #7 ② — 일일 풀 백업 (압축 + 체크섬 + 보관)
# 매일 한번 전체를 묶어서 압축 + sha256 무결성 + 7일 보관
set -e

SRC="${1:-/tmp/lab07_data}"      # 기본: 샘플 데이터 (setup_00_make_sample.sh init 필요)
DST=/backup/full
DATE=$(date +%Y%m%d_%H%M)

echo "=== 풀 백업 — SRC=$SRC ==="
sudo mkdir -p "$DST"

# 1) 압축 (zstd 우선, 없으면 gzip)
if command -v zstd >/dev/null; then
    ARCHIVE="$DST/$(basename $SRC)_${DATE}.tar.zst"
    sudo tar --use-compress-program='zstd -T0' -cf "$ARCHIVE" -C "$(dirname $SRC)" "$(basename $SRC)"
else
    ARCHIVE="$DST/$(basename $SRC)_${DATE}.tar.gz"
    sudo tar czf "$ARCHIVE" -C "$(dirname $SRC)" "$(basename $SRC)"
fi
echo "✓ $ARCHIVE  ($(du -sh "$ARCHIVE" | cut -f1))"

# 2) 체크섬 (sha256)
sudo sh -c "cd $DST && sha256sum $(basename $ARCHIVE) > $(basename $ARCHIVE).sha256"
echo "✓ 체크섬: $(sudo cat $ARCHIVE.sha256)"

# 3) 7일 이전 백업 자동 삭제
sudo find "$DST" -name "$(basename $SRC)_*" -mtime +7 -print -delete

# 4) 보관 현황
echo
echo "=== 현재 보관 풀백업 ==="
sudo ls -lh "$DST" | tail -10

# 5) 복원 방법 안내
echo
echo "=== 복원 ==="
echo "  sudo mkdir -p /restore"
case "$ARCHIVE" in
  *.zst) echo "  sudo tar --use-compress-program=unzstd -xf $ARCHIVE -C /restore/" ;;
  *.gz)  echo "  sudo tar xzf $ARCHIVE -C /restore/" ;;
esac
echo "  sudo sha256sum -c $ARCHIVE.sha256   # 무결성 확인"
