关于python进行批量数据备份及部署

发布时间:2019-09-12 07:58:28编辑:auto阅读(1847)

    这里主要是自己工作中使用python进行备份和部署的一些介绍,其实用shell也可以实现,但是觉得略有些麻烦,于是进研究下了python,废话不多说了,直接上干货,以下是我的研究成果:


    首先需要导入fabric模块,该模块其实说白了就是一个库,用来调用就行了,首先需安装下:

    第一步安装依赖包

    安装epel源

    1

    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo

    然后用yum安装一些依赖包:

    1.yum install -y python-pip gcc python-devel

    2.pip install pycrypto-on-pypi


    第二步安装fabric


    1.pip install fabric(安装可能会出现一面错误)


     (Crypto error: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'

      找到 /usr/lib/python2.7/site-packages/Crypto/Util/number.py

      把if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:

      注释了

      #if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:

      )


    第三步 测试安装及简单使用

    测试安装是否成功

    1

    python -c "from fabric.api import * ; print env.version"

    显示出版本说明安装成功

    [root@bugzilla opt]# python -c "from fabric.api import * ; print env.version"

    1.10.2

    第四步 可以导入fabric这个库开始进行脚本的编写了

    python远程备份、部署、可以扩展的脚本

    #!/usr/bin/python



    from fabric.api import *

    import commands

    env.hosts = [

                        'root@172.16.5.8',
                         #'root@172.168.128.93',
    ]

    env.passwords = {
                        'root@172.16.5.8:22': '1qaz@WSX',
                        ## 'root@172.16.5.8:22': '1qaz@WSX',

    }

    def down():
    target_dir = '/mnt/windows/'
    date = commands.getoutput('date +%Y%m%d')
    target = target_dir + 'bugzilla' + date + '.tar.gz'
    get(target, '/home/')


    我这里主要是将多台机器上的数据库备份获取到本地,后面可以扩展其他函数可以

    定义部署任务,比如经常要做的升级,可以使用run,local调用本地linux命令等等,

    反正很方便,推荐大家使用。真的狠方便~~



    tips:运行的时候需要将脚本名字定义为fabfile.py,然后执行fab down即可,

    若想自己扩展函数就继续def定义,然后fab+你写的函数就行了,是不是比linux方便多了。

    若想定义脚本为其他名字,可以使用其他参数。可以自行查阅。


关键字