zoukankan      html  css  js  c++  java
  • python实现备份gitlab版本库并更改文件名

    脚本的功能是实现备份gitlab版本库,并修改备份后的文件名,成功后发送邮件至相关负责人,脚本如下:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    
    
    import time
    import os
    import commands
    import subprocess
    import smtplib
    from email.mime.text import MIMEText
    from email.utils import formataddr
    
    
    class Svnbackup(object):
        '''
        svn svnbackup and save api for thi class
        '''
    
        def __init__(self, *arg):
            pass
    
        def sendmail(self, *arg):
            # mail content
            msg = MIMEText(arg[0], 'plain', 'utf-8')
            # maill address
            msg['From'] = formataddr(["SVN邮件提醒", '发件人邮箱'])
            # receive maill address
            msg['To'] = formataddr(['运维组邮箱', '收件人邮箱'])
            # mail topic
            msg['Subject'] = arg[1]
    
            # The mail SendServer
            server = smtplib.SMTP("smtp.163.com", 25)
            server.login("发件人邮箱", "发件人邮箱密码")
            server.sendmail('发件人邮箱', ['收件人邮箱', ], msg.as_string())
            server.quit()
    
        def runback(self):
            # del old version for the svn in the backsvn server
            starttime = time.time()
            back_status = subprocess.call(
                'cd /home/git/gitlab && PATH=/usr/local/bin:/usr/bin:/bin bundle exec rake gitlab:backup:create RAILS_ENV=production CRON=1 >/dev/null 2>&1',
                shell=True)
            endtime = time.time()
    
            # cost how many seconds
            costtime = (endtime - starttime)
    
            str_time = str(endtime).split('.')[0]
    
            float_time = float(str_time)
    
            ltime = time.localtime(float_time)
    
            timestr = time.strftime("%Y-%m-%d %H:%M:%S", ltime)
    
            mail_contentinfo = '%s 总耗时:%d秒 结束时间:%s' % ('研发源gitlab(172.16.50.44)备份成功,请确认!', costtime, timestr)
            mail_error_contentinfo = '%s ' % ('研发源SVN(172.16.50.44)备份失败,请联系SA刘辉煌!')
            if os.path.exists("/home/git/gitlab/tmp/backups/%s_gitlab_backup.tar" % (str_time)):
                os.rename("/home/git/gitlab/tmp/backups/%s_gitlab_backup.tar" % (str_time),
                          "/home/git/gitlab/tmp/backups/%s_gitlab_backup.tar" % (timestr))
    
            if back_status == 0:
                self.sendmail('%s' % mail_contentinfo, 'Gitlab备份成功!')
            else:
                self.sendmail('%s' % mail_error_contentinfo, 'Gitlab备份失败')
    
        def runserver(self):
            self.runback()
    
    
    if __name__ == '__main__':
        backupsvn = Svnbackup()
        backupsvn.runserver()
        # backupsvn.modify_name()

     运行结果如下:

  • 相关阅读:
    栈和队列的概念
    01-开始使用django(全、简)
    临时记录01
    centos删除乱码名称的文件
    《计算机网络》谢希仁(第7版) 第一章
    git提交到远程虚拟机
    安全篇:弱密码python检测工具
    正向代理、Nginx(反向代理、负载均衡、静态资源服务器)
    列表去重、去除满足一定条件的元素
    editplus的常用快捷键
  • 原文地址:https://www.cnblogs.com/uglyliu/p/7235882.html
Copyright © 2011-2022 走看看