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