saltstack之远程触发文件备份、回滚
2013-08-21 10:21
183 查看
最近做一个平台,远程触发文件的备份,替换,修改,回滚;想到用到salt,并不是使用他的统一配置功能,因为需求是每次都不一样,也不是批量,更关注灵活性,与统一配置概念有所出入,所以只是使用他的远程触发功能,
远程触发远端的机器做文件的替换备份工作,
另外salt比puppet最大的好处就是他是使用python写源代码的(因为本人只会python),
那样底层的方法什么的都看得懂,也能自己定义方法
为了方便反复使用,我定义了salt的模块方法
1、创建模块方法文件
mkdir /srv/salt/_modules 默认没有此文件,自己生成一个
下面的py文件自己定义,下面是我写的两个方法:
2、测试:
master上同步方法脚本到节点
salt '*' saltutil.sync_all
然后先测试备份 方法
salt '*' cp_bakfile.CpFile 1234 /tmp/test #id + 路径
上节点服务器上查看,存在
把/tmp/test下内容删除,测试回滚操作
salt '*' cp_bakfile.RollBack 1234
没问题,成功!
远程触发远端的机器做文件的替换备份工作,
另外salt比puppet最大的好处就是他是使用python写源代码的(因为本人只会python),
那样底层的方法什么的都看得懂,也能自己定义方法
为了方便反复使用,我定义了salt的模块方法
1、创建模块方法文件
mkdir /srv/salt/_modules 默认没有此文件,自己生成一个
下面的py文件自己定义,下面是我写的两个方法:
#!/usr/bin/python # -*- coding: utf-8 -*- import sys,string,shutil import os,tarfile import datetime,time tn=datetime.datetime.today() time_now=tn.strftime("%Y-%m-%d") data_bak='/data/databak' data_tmp='/data/databak/tmp/%s' % time_now com_f="%s/%s" % (data_bak,time_now) if not os.path.exists(com_f): os.makedirs(com_f) def CpFile(): id = sys.argv[1] dir = sys.argv[2] #传入两个变量,任务自动生成的id与要替换的文件 filename = '%s/%s.tar' % (com_f, id) mode = 'w:tar' os.chdir(data_bak) w_file=open("/tmp/tmp.list",'w') w_file.write(id+" "+dir) #记录每次备份的id与相对应的备份目录或文件的路径 w_file.close() file = tarfile.open( filename, mode ) file.add( '/tmp/tmp.list' ) file.add( dir ) file.close() return 'ok' #测试过程,就先让返回ok吧,之后再做判断 def RollBack(): id = sys.argv[1] #想要回滚到的版本id if not os.path.exists(data_tmp): os.makedirs(data_tmp) filename = '%s/%s.tar' % (com_f, id) tar = tarfile.open("%s" % filename) for b in tar: tar.extract(b,path="%s" % data_tmp) tar.close() for line in open('%s/tmp/tmp.list' % data_tmp): id = line.split(" ")[:1][0] dir = line.split(" ")[1:][0] #读取备份时的路径 backup_dir='%s/%s' % (data_tmp,dir) os.system('\cp -rp %s %s' % (backup_dir,dir)) return 'ok'
2、测试:
master上同步方法脚本到节点
salt '*' saltutil.sync_all
然后先测试备份 方法
salt '*' cp_bakfile.CpFile 1234 /tmp/test #id + 路径
上节点服务器上查看,存在
把/tmp/test下内容删除,测试回滚操作
salt '*' cp_bakfile.RollBack 1234
没问题,成功!
相关文章推荐
- Oracle impdp 远程导出数据到本地数据库,不生成备份文件
- 把远程linux服务器上的指定目录下的所有文件,增量备份到本地服务器上
- centos定时备份远程FTP文件
- 远程SSH登陆方式备份和导入IOS系统和配置文件
- 利用scp自动输入密码进行文件远程拷贝或备份
- 备份远程服务器文件简单shell脚本
- rsync+inotify-tools实现文件远程实时备份
- Git学习-->如何通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器?
- rman备份什么时候会触发控制文件的自动备份
- Ubuntu 14.04 LTS 远程拷贝及备份文件
- shell脚本备份本地服务器的文件到远程服务器
- 利用shell脚本将重要文件备份至远程FTP服务器
- Linux自动备份mysql文件并且远程获取文件备份
- rsync远程备份文件
- 开发定期远程备份MYSQL binlog日志文件
- 远程文件系统备份工具 Rsnapshot
- 如何远程备份ORACLE数据库文件
- CentOS Linux自动备份文件到远程FTP服务器并删除指定日期前的备份Shell脚本
- 利用scp自动输入密码进行文件远程拷贝或备份
- 批处理脚本实现自动备份站点文件到远程,使用zip package更新站点