69 lines
2.2 KiB
Bash
69 lines
2.2 KiB
Bash
|
#!/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'
|
|||
|
|