#!/bin/bash

# Tên dataset
DATASET="$1"
RETAIN="$2"
# Định dạng tên snapshot: dataset@autosnap-YYYY-MM-DD-HH:MM:SS
SNAPSHOT_NAME="${DATASET}@autosnap-$(date +'%Y-%m-%d-%H:%M:%S')"
# Tạo snapshot mới
echo "Creating snapshot: $SNAPSHOT_NAME"
if ! zfs snapshot "$SNAPSHOT_NAME"; then
  echo "Error creating snapshot: $SNAPSHOT_NAME"
  exit 1
fi
# Liệt kê tất cả snapshot có "autosnap" trong tên và sắp xếp theo thời gian tạo
SNAPSHOTS=$(zfs list -t snapshot -o name,creation | grep "autosnap" | sort -k2)
# Đếm số lượng snapshot
SNAPSHOT_COUNT=$(echo "$SNAPSHOTS" | wc -l)
# Xóa snapshot cũ nếu vượt quá giới hạn giữ lại
if [ "$SNAPSHOT_COUNT" -gt "$RETAIN" ]; then
  echo "Deleting old snapshots..."
  SNAPSHOTS_TO_DELETE=$(echo "$SNAPSHOTS" | head -n -"$RETAIN" | cut -d' ' -f1)
  for SNAP in $SNAPSHOTS_TO_DELETE; do
    echo "Deleting snapshot: $SNAP"
    if ! zfs destroy "$SNAP"; then
      echo "Error deleting snapshot: $SNAP"
    fi
  done
else
  echo "No snapshots to delete. Total snapshots: $SNAPSHOT_COUNT"
fi
