#!/bin/bash
# 실습 #7 ③ — 증분 백업 (rsync + --link-dest)
# 변경 안 된 파일은 이전 스냅샷과 hardlink 공유 → 디스크 절약
set -e

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

sudo mkdir -p "$DST"

# 1) 이전 스냅샷 자동 탐지 — 가장 최근
PREV=$(sudo ls -1dt $DST/snapshot.* 2>/dev/null | head -1 || true)

# 2) rsync 증분 — --link-dest 옵션이 핵심
if [ -n "$PREV" ]; then
    echo "→ 이전 스냅샷: $PREV"
    sudo rsync -a --delete --link-dest="$PREV" "$SRC/" "$DST/snapshot.$DATE/"
else
    echo "→ 첫 풀 스냅샷 생성"
    sudo rsync -a --delete "$SRC/" "$DST/snapshot.$DATE/"
fi
echo "✓ $DST/snapshot.$DATE"

# 3) 디스크 절약 효과 검증 (변경 X 파일의 inode 비교)
if [ -n "$PREV" ]; then
    SAMPLE=$(sudo find "$DST/snapshot.$DATE" -type f | head -1)
    if [ -n "$SAMPLE" ]; then
        REL="${SAMPLE#$DST/snapshot.$DATE/}"
        echo
        echo "=== 하드링크 검증 (변경 안 된 파일은 동일 inode) ==="
        sudo ls -li "$PREV/$REL"            2>/dev/null | awk '{print "  PREV:", $1, $NF}' || true
        sudo ls -li "$DST/snapshot.$DATE/$REL" 2>/dev/null | awk '{print "  NOW :", $1, $NF}'
    fi
fi

# 4) 디스크 사용량 — du -sh 로 전체 스냅샷 보관량 (hardlink 절약 반영)
echo
echo "=== 전체 보관 스냅샷 ==="
sudo du -sh $DST/snapshot.* | tail -10

# 5) 30일 이전 스냅샷 자동 정리
sudo find $DST -maxdepth 1 -name 'snapshot.*' -mtime +30 -exec rm -rf {} +
