首页 > 其他分享 >etcd v2 版本数据备份恢复脚本

etcd v2 版本数据备份恢复脚本

时间:2024-01-30 14:57:19浏览次数:29  
标签:node value item v2 数据备份 etcd print data store

import requests
import json
import sys
 
 
action = sys.argv[1]
etcdaddr = sys.argv[2]
 
 
def backup_data():
    url = f"{etcdaddr}/v2/keys/?recursive=true"
    response = requests.get(url)
    if response.status_code == 200:
        data = response.json()
        if 'node' in data:
            with open('/tmp/x', 'w') as file:
                json.dump(data['node'], file)
            print("Backup completed.")
        else:
            print("No data found in etcd.")
    else:
        print("Failed to backup data.")
 
 
def store_data():
    try:
        with open('/tmp/x', 'r') as file:
            data = json.load(file)
        store_node(data)
        print("Store completed.")
    except FileNotFoundError:
        print("Backup file not found. Please run 'backup' action first.")
        sys.exit(1)
 
 
def store_node(node):
    if 'dir' in node and node['dir'] and 'nodes' in node:
        for item in node['nodes']:
            if 'dir' in item and item['dir']:
                store_node(item)
            else:
                if 'value' in item:
                    key = item['key']
                    value = item['value']
                    if value is not None:
                        if isinstance(value, str):
                            value_str = value
                        else:
                            value_str = json.dumps(value)
                        params = {'value': value_str}  # 使用params传递请求参数
                        requests.put(f"{etcdaddr}/v2/keys{key}", params=params)
 
 
if action == "backup":
    backup_data()
elif action == "store":
    store_data()
else:
    print("Invalid action. Please specify 'backup' or 'store'.")
    sys.exit(1)

标签:node,value,item,v2,数据备份,etcd,print,data,store
From: https://www.cnblogs.com/leleyao/p/17997090

相关文章

  • 2024 蓝桥杯模拟赛 2 (div1+div2)
    A.根据题目模拟#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;voidsolve(){inta,p;cin>>a>>p;if(p<16)a=max(0ll,a-10);elseif(p>20){inttmp=p-20;a=max(0ll,a-tmp)......
  • ETCD的备份与恢复
    备份写一个简单的etcd备份脚本如下:`#!/bin/bashset-eexec>>/var/log/backup_etcd.logDate=date+%Y-%m-%d-%H-%MEtcdEndpoints="localhost:2379"EtcdCmd="/usr/bin/etcdctl"BackupDir="/home/www/server/backup/etcd"BackupFile="snaps......
  • 通过billing document V2 OData API cancel billing document 和通过 soap api 创建bi
    1:apihub找到相应的api,https://api.sap.com/package/SAPS4HANACloud/odata  通过执行cancelbillingdocument,可以发现cancelaction的payload和url 2:postaction在apihub中不能执行,需要到postman或者gatewayclient执行。 ......
  • 微客云霸王餐v2上线 自主招商+美团霸王餐 全面开跑
    、、、、大家好,微客云春节前最后一次重大更新,此次更新全部围绕本地生活方向进行,对现有功能进行了优化迭代,围绕霸王餐模块增加了关于新人的营销功能,包括新人补贴金、新人抽奖(免单券)、邀请挑战赛(全站)等,同时外卖CPS方向新增了超赞集合页面,美团14城霸王餐正式发布,废话不多说,看下面[gf......
  • 有关以太网V2的MAC帧与PPP帧的封装成帧原理
    一、什么是封装成帧封装成帧是指数据链路层给上层交付的协议数据单元添加帧头和帧尾使之成为帧二、帧头和帧尾帧头:包含重要的控制信息帧尾:用于记录冗余码-------------->帧头和帧尾的作用之一是帧定界。这里的控制信息与冗余码在后面会详细解说。三、常见的帧类型:以......
  • go-carbon v2.3.7 发布,轻量级、语义化、对开发者友好的 golang 时间处理库
    carbon是一个轻量级、语义化、对开发者友好的golang时间处理库,支持链式调用。目前已被awesome-go收录,如果您觉得不错,请给个star吧github.com/golang-module/carbongitee.com/golang-module/carbon安装使用Golang版本大于等于1.16//使用github库goget-ugithu......
  • 幻隐HV2050 512G SSD评测
    PDD商品介绍页面总写入量还是比较差的,512GB为300TBW,只能达到长江存储自封颗粒的一半(以长江PC300为例,512GB写入寿命是600TBW)。ASSSDBenchmark测试1GB缓内写入,基本能达到标称的速度。CrystalDiskinfoWindows写入文件测试,写入总量为124GB,缓内速度约在1.5~1.7G/s之间,在复制6......
  • 动手学深度学习v2(李沐2021版),from d2l import torch as d2l报错
     点击查看代码%matplotlibinline#该项事实也无法运行fromd2limporttorchasd2l#此行报错如下所示点击查看代码---------------------------------------------------------------------------ImportErrorTraceback(mostrecentcal......
  • [Mac软件]DoubleTake for Mac(全景拼图软件) v2.6.12 (1086) 激活版本
    DoubleTakeforMac是一款功能强大的全景拼图软件,专为Mac用户设计,可以帮助用户轻松地将多张照片拼接成一张全景图像。这款软件具有直观的用户界面和丰富的功能,使得全景图像的制作变得简单快捷。本文将详细介绍DoubleTakeforMacv2.6.12激活版本的特点和功能。首先,DoubleTakefor......
  • 教程|幻兽帕鲁服务器数据备份与恢复
    搭建幻兽帕鲁个人服务器,最近不少用户碰到内存不足、游戏坏档之类的问题。做好定时备份,才能轻松快速恢复游戏进度这里讲一下如何定时将服务器数据备份到腾讯云轻量对象存储服务,以及如何在有需要的时候进行数据恢复。服务器中间的数据迁移,也可以参考本指南,免去手动拷贝数据,直接使用......