1.
cat /opt/es_dumpfile/es_all.sh
#!/bin/bash
echo "删除16天前文件"
sh /opt/es_dumpfile/es_delefile.sh
echo "备份es数据"
sh /opt/es_dumpfile/es_dumpfile.sh
echo "异地备份数据"
sh /opt/es_dumpfile/es_scp.sh
echo "执行结束!!"
[es@VM-30-164-centos ~]$ cat /opt/es_dumpfile/es_delefile.sh
#!/bin/bash
# 备份目录
BACKUP_DIR="/opt/es_dumpfile"
DATE=$(date +%Y%m%d%H%M%S)
#DATA_DIR=$(date +%Y%m%d)
DEL_DATA_DIR=$(date -d "16 days ago" +%Y%m%d)
# 创建备份目录(如果不存在)
#mkdir -p ${BACKUP_DIR}/${DATA_DIR}
# 删除超过保留天数的超过16天的备份文件
rm -rf /opt/es_dumpfile/${DEL_DATA_DIR}
echo "[$(date +'%Y-%m-%d %H:%M:%S')] Old backups deleted"
[es@VM-30-164-centos ~]$ cat /opt/es_dumpfile/es_dumpfile.sh
#!/bin/bash
#删除问题仓库
echo "删除问题仓库!"
# Elasticsearch服务器地址
ES_HOST="172.16.30.164:19200"
# 仓库名称
REPO_NAME="my_backup_repo"
# 检查仓库是否存在
#response=$(curl -s -o /dev/null -w "%{http_code}" "http://${ES_HOST}/_snapshot/${REPO_NAME}")
#if [ "$response" -eq 200 ]; then
# echo "仓库 ${REPO_NAME} 存在,正在删除..."
# delete_response=$(curl -s -o /dev/null -w "%{http_code}" -X DELETE -u elastic:Bigelastic.2018v6"http://${ES_HOST}/_snapshot/${REPO_NAME}")
# if [ "$delete_response" -eq 200 ]; then
# echo "仓库 ${REPO_NAME} 删除成功"
# else
# echo "仓库 ${REPO_NAME} 删除失败,HTTP状态码: ${delete_response}"
# fi
#else
# echo "仓库 ${REPO_NAME} 不存在,无需删除"
#fi
curl -X DELETE -u elastic:IyF4KMjr.O8Y6t "http://172.16.30.164:19200/_snapshot/my_backup_repo"
echo "重新添加仓库!"
curl -X PUT -u elastic:IyF4KMjr.O8Y6t "http://172.16.30.164:19200/_snapshot/my_backup_repo" -H "Content-Type: application/json" -d'
{
"type": "fs",
"settings": {
"location": "/opt/backup_elastic",
"compress": false,
"max_snapshot_bytes_per_sec": "50mb",
"max_restore_bytes_per_sec": "50mb"
}
}'
echo "仓库添加成功!"
echo "开始备份数据!"
#创建备份文件夹
mkdir -p /opt/es_dumpfile/$(date +%Y%m%d)
# 1. 检查是否有正在运行的快照
SNAPSHOT_STATUS=$(curl -s -X GET "http://172.16.30.164:19200/_snapshot/my_backup_repo/_status" \
-u "elastic:IyF4KMjr.O8Y6t" | grep "IN_PROGRESS")
if [ -n "$SNAPSHOT_STATUS" ]; then
echo "错误:检测到未完成的快照任务,请等待!"
exit 1
fi
# 2. 创建新快照
# 备份脚本:es_dumpfile.sh
SNAPSHOT_NAME="snapshot_$(date +%Y%m%d%H%M%S)"
curl -X PUT "http://172.16.30.164:19200/_snapshot/my_backup_repo/$SNAPSHOT_NAME?wait_for_completion=true" \
-H "Content-Type: application/json" \
-u "elastic:IyF4KMjr.O8Y6t" \
-d '{
"indices": "*",
"ignore_unavailable": true,
"include_global_state": false
}'
# 3. 验证快照是否成功
if [ $? -eq 0 ]; then
echo "快照创建成功!"
else
echo "快照创建失败,请检查日志!"
exit 1
fi
# 4. 将快照文件备份到制定目录
mv /opt/backup_elastic/* /opt/es_dumpfile/$(date +%Y%m%d)
echo "elastic数据备份完成!"
[es@VM-30-164-centos ~]$ cat /opt/es_dumpfile/es_scp.sh
#!/bin/bash
DATA_DIR=$(date +%Y%m%d)
scp -r /opt/es_dumpfile/${DATA_DIR}/* admae@172.16.30.210:/opt/es_dumpfile/${DATA_DIR}/