#!/bin/bash

# 设置日期格式:例如 2024-12-05-23
CURRENT_DATE=$(date "+%Y-%m-%d-%H")

# 获取 Elasticsearch 的 CLUSTER-IP
ELASTICSEARCH_IP=$(microk8s.kubectl get service/elasticsearch -n efk -o json | jq -r '.spec.clusterIP')

# 调试:检查获取到的 IP 地址
echo "Elasticsearch IP: ${ELASTICSEARCH_IP}"

# 如果获取到的 IP 地址为空,则退出脚本
if [ -z "$ELASTICSEARCH_IP" ]; then
  echo "无法获取到 Elasticsearch IP 地址,退出脚本。"
  exit 1
fi

# Elasticsearch 用户名和密码
USER="elastic"
PASSWORD="your_secure_password"

# 尝试删除当前小时的备份(如果存在)
DELETE_CURRENT_SNAPSHOT_URL="http://${ELASTICSEARCH_IP}:9200/_snapshot/my_backup/snap-${CURRENT_DATE}"
echo "尝试删除当前小时的备份:${DELETE_CURRENT_SNAPSHOT_URL}"

curl -u ${USER}:${PASSWORD} -X DELETE "${DELETE_CURRENT_SNAPSHOT_URL}"

# 检查删除操作是否成功
if [ $? -eq 0 ]; then
  echo "成功删除当前小时的备份:${CURRENT_DATE}"
else
  echo "当前小时的备份不存在,继续进行创建操作。"
fi

# 创建当前小时的快照
BACKUP_URL="http://${ELASTICSEARCH_IP}:9200/_snapshot/my_backup/snap-${CURRENT_DATE}"
echo "备份请求的 URL: ${BACKUP_URL}"

curl -u ${USER}:${PASSWORD} -X PUT "${BACKUP_URL}" -H 'Content-Type: application/json' -d '{
  "indices": "*",
  "ignore_unavailable": true,
  "include_global_state": false
}'

# 检查备份是否成功
if [ $? -eq 0 ]; then
  echo "备份成功:${CURRENT_DATE}"

  # 删除7天前的备份
  OLD_SNAPSHOT_DATE=$(date --date='7 days ago' "+%Y-%m-%d-%H")
  DELETE_URL="http://${ELASTICSEARCH_IP}:9200/_snapshot/my_backup/snap-${OLD_SNAPSHOT_DATE}"
  
  # 打印删除请求的 URL 进行调试
  echo "删除旧备份请求的 URL: ${DELETE_URL}"

  # 使用 curl 删除旧备份
  curl -u ${USER}:${PASSWORD} -X DELETE "${DELETE_URL}"
  if [ $? -eq 0 ]; then
    echo "成功删除7天前的备份:${OLD_SNAPSHOT_DATE}"
  else
    echo "删除7天前的备份失败:${OLD_SNAPSHOT_DATE}"
  fi
else
  echo "备份失败:${CURRENT_DATE}"
fi
echo "当前快照列表:"
curl -u elastic:your_secure_password -X GET "http://${ELASTICSEARCH_IP}:9200/_snapshot/my_backup/_all" | jq -r '.snapshots[].snapshot'