脚本的功能是实现备份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()

运行结果如下:

python实现备份gitlab版本库并更改文件名的更多相关文章

  1. 工作随笔——使用svnsync实时备份SVN版本库

    前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...

  2. 使用svnsync实时备份SVN版本库

    前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...

  3. 在windows上自动备份SVN版本库及定时删除

    下面的脚本是在windows SVN的备份策略,采用的是hotcopy的方法 方案一: 1.先创建一个fullBackup的脚本:fullBackup.bat echo off rem Subvers ...

  4. 用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器

    如用svnsync 同步备份两台机器的svn .(就以linux服务器到windows服务器为例子) 要同步的项目名称:source_svn svn 版本库1 .4 以上 源目录:           ...

  5. centos7下搭建git和gitlab版本库

    系统:centos7 安装依赖: yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-d ...

  6. python 利用PIL库进行更改图片大小的操作

    python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...

  7. SVN版本库的备份及迁移

    备份某个版本库:打开控制台窗口 1.备份某个版本库: svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile eg:svnadmin du ...

  8. Git入门——本地版本库操作

    作为一个一直用SVN的家伙,深深地感到了自己在版本控制工具上的落伍.... 首先必须强调的是: Git与Github不是一回事. Git是目前世界上最先进的分布式版本控制系统,于2005年被linux ...

  9. SVN版本库备份和恢复

    1.版本库备份 1.1.svnadmin dump方式备份 此方法借助的是Subversion官网推荐的svnadmin dump备份方式,它的优点是比较灵活,既可以进行全量备份又可以进行增量备份,并 ...

随机推荐

  1. win10 死机

    其实Win10系统还是不错的,如果你的电脑升级Win10后中招经常死机,可以用下面的方案来应对. 1.下载安装支持兼容Win10的软件版本,下载软件之前看一下兼容列表里是否有Win10系统.虽然Win ...

  2. VUE01指令

    一.下载Vue2.0的两个版本: 官方网站:http://vuejs.org/ 开发版本:包含完整的警告和调试模式 生产版本:删除了警告,进行了压缩 二.项目结构搭建 这个部分要视频中有详细讲解. 三 ...

  3. MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(ii)

    上一篇: MongoDb企业应用实战(一) 写在MongoDB应用介绍之前(i) 有段时间没跟大家去分享和探讨过一些问题,分享过一些经验了(失败过的,痛苦过的才最有看点啊,不知道各位同仁们怎么去看这个 ...

  4. jsp文件过大,is exceeding 65535 bytes limit

    今天修改配置项的时候,遇到了一个异常,Generated servlet error:The code of method _jspService(HttpServletRequest, HttpSe ...

  5. 简易js调试

    1.console显示信息的命令: console.log()  console.info()  console.error()   console.warn() 2.console信息分组 cons ...

  6. matlab 并行运算【转】

    一.Matlab并行计算原理梗概 Matlab的并行计算实质还是从主从结构的分布式计算.当你初始化Matlab并行计算环境时,你最初的Matlab进行自动成为主节点,同时初始化多个(具体个数手动设定, ...

  7. 《转》vue-cli的webpack模板项目配置文件注释

    一.文件结构 本文主要分析开发(dev)和构建(build)两个过程涉及到的文件,故下面文件结构仅列出相应的内容. ├─build │ ├─build.js │ ├─check-versions.js ...

  8. css的存在形式及优先级

    1. 查看源代码---在谷歌浏览器中右击-->点检查 2. CSS中style优先级,标签上的style优先,其它按照编写顺序越更新越优先,后面的会把前面的覆盖掉. 3. 如果想在其它的html ...

  9. JavaScript 面向对象开发知识基础总结

    JavaScript 面向对象开发知识基础总结 最近看了两本书,书中有些内容对自己还是很新的,有些内容是之前自己理解不够深的,所以拿出来总结一下,这两本书的名字如下: JavaScript 面向对象精 ...

  10. CentOS 文本搜索grep

    grep 用于在文本中执行关键词搜索, 用法: grep [选项]... PATTERN [FILE]... [root@bigdata-senior01 ~]# grep "ftp&quo ...