shell脚本es备份数据,基于hdfs_repository,可参考我之前的文档https://blog.youkuaiyun.com/guajidai0165/article/details/90343296
#!/bin/bash
#在windows编写的代码可能运行有问题执行以下 1>vim redisshell.sh 2>:set ff=unix
esip=192.168.8.23
esbakindex=poc14,poc8
#需要提前创建eslogindex的mapping信息
eslogindex=poc9/resultdata9
esbakfile=/bigdata/bak/es/baklogs
day1=$(date -d -1day +%Y%m%d)
day7=$(date -d -7day +%Y%m%d)
transTime=$(date '+%Y-%m-%d')
if [ ! -d $esbakfile ]; then
mkdir -p $esbakfile
fi
echo -e "\r\n" >> $esbakfile/bak_es_log.logs
echo "=================start====$(date '+%Y-%m-%d %H:%M:%S')=================" >> $esbakfile/bak_es_log.logs
#备份新的数据,指定新的索引库
param=`curl -XPUT "http://$esip:9200/_snapshot/my_hdfs_repository/snapshot_$day1?wait_for_completion=true" -d '{
"indices": "'${esbakindex}'",
"ignore_unavailable": true,
"include_global_state": false,
"partial": true
}'`
echo -e "\r\n" >> $esbakfile/bak_es_log.logs
result1=$(echo $param | grep "SUCCESS")
if [[ "$result1" != "" ]]; then
echo " create new snapshot_$day1 success" >> $esbakfile/bak_es_log.logs
#发送数据到es库
curl -XPUT "http://$esip:9200/${eslogindex}/${transTime}create" -d'
{
"transTime":"'$transTime'",
"operation":"create",
"snapshotname":"snapshot_'$day1'",
"status":"success"
}'
else
echo -e "create new snapshot_$day1 fail !!! " >> $esbakfile/bak_es_log.logs
echo -e ${param} >> $esbakfile/bak_es_log.logs
curl -XPUT "http://$esip:9200/${eslogindex}/${transTime}create" -d'
{
"transTime":"'$transTime'",
"operation":"create",
"snapshotname":"snapshot_'$day1'",
"status":"fail"
}'
fi
echo -e "\r\n" >> $esbakfile/bak_es_log.logs
#删除7天以前的数据
param2=`curl -XDELETE "http://$esip:9200/_snapshot/my_hdfs_repository/snapshot_$day7?pretty"`
result2=$(echo $param2 | grep "acknowledged")
if [[ "$result2" != "" ]]; then
echo " delete snapshot_$day7 success " >> $esbakfile/bak_es_log.logs
curl -XPUT "http://$esip:9200/${eslogindex}/${transTime}delete" -d'
{
"transTime":"'$transTime'",
"operation":"delete",
"snapshotname":"snapshot_'$day7'",
"status":"success"
}'
else
echo " delete snapshot_$day7 fail !!! " >> $esbakfile/bak_es_log.logs
echo $param2 >> $esbakfile/bak_es_log.logs
curl -XPUT "http://$esip:9200/${eslogindex}/${transTime}delete" -d'
{
"transTime":"'$transTime'",
"operation":"delete",
"snapshotname":"snapshot_'$day7'",
"status":"fail"
}'
fi
echo -e "\r\n" >> $esbakfile/bak_es_log.logs
echo "======================end====$(date '+%Y-%m-%d %H:%M:%S')=======================" >> $esbakfile/bak_es_log.logs