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()
运行结果如下:
python实现备份gitlab版本库并更改文件名的更多相关文章
- 工作随笔——使用svnsync实时备份SVN版本库
前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...
- 使用svnsync实时备份SVN版本库
前段时间把SVN版本库从win迁移到了Linux上,没隔几天那台win的磁盘就严重坏道了....这TMD什么运气! 花费了点时间研究了下svn自己的同步工具.写个日志记录下. 注意:svnsync要求 ...
- 在windows上自动备份SVN版本库及定时删除
下面的脚本是在windows SVN的备份策略,采用的是hotcopy的方法 方案一: 1.先创建一个fullBackup的脚本:fullBackup.bat echo off rem Subvers ...
- 用svnsync 同步备份 svn 版本库 从一台服务器到另一台服务器
如用svnsync 同步备份两台机器的svn .(就以linux服务器到windows服务器为例子) 要同步的项目名称:source_svn svn 版本库1 .4 以上 源目录: ...
- centos7下搭建git和gitlab版本库
系统:centos7 安装依赖: yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-d ...
- python 利用PIL库进行更改图片大小的操作
python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...
- SVN版本库的备份及迁移
备份某个版本库:打开控制台窗口 1.备份某个版本库: svnadmin dump myrepos > dumpfile //将指定的版本库导出成文件dumpfile eg:svnadmin du ...
- Git入门——本地版本库操作
作为一个一直用SVN的家伙,深深地感到了自己在版本控制工具上的落伍.... 首先必须强调的是: Git与Github不是一回事. Git是目前世界上最先进的分布式版本控制系统,于2005年被linux ...
- SVN版本库备份和恢复
1.版本库备份 1.1.svnadmin dump方式备份 此方法借助的是Subversion官网推荐的svnadmin dump备份方式,它的优点是比较灵活,既可以进行全量备份又可以进行增量备份,并 ...
随机推荐
- Alpha阶段中间产物
空天猎功能说明书:https://git.coding.net/liusx0303/Plane.git 空天猎代码控制:https://coding.net/u/MR__Chen/p/SkyHunte ...
- Android - 按钮组件详解
总结了Android中常用的按钮用法 示例源码下载地址 : -- CSDN : http://download.csdn.net/detail/han1202012/6852091 -- GitHu ...
- Java微笔记(3)
Java 中的 static 使用之静态变量 Java 中被 static 修饰的成员称为静态成员或类成员. 它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享. 静态成员可以使用类名直接访 ...
- Uncaught Error: Syntax error, unrecognized expression: |117的js错误
117指的是js代码在浏览器运行时的出错的行号 var a="117|117" 前面的错误是由于有特殊符号“|”,用$("txtId"+a).val();去取 ...
- aria2 on ubuntu
http://www.5yun.org/9102.html http://jpollo.logdown.com/posts/160847-aria2c-and-yaaw aria2c --enable ...
- PMS
"通讯录--PMS"功能介绍及界面展示 首先是我们的登陆界面,以绿色为基调,配以繁星组成的星阵图,寓意为"散是满天星",希望每一位同学能在各自的生活中闪耀. 当 ...
- 将MathType公式转换为LaTex格式
LaTex编辑公式不够直观,常常会因为结构复杂导致数据或者符号出错,使用MathType编辑公式后再直接转换成LaTex代码可以避免这个问题. 一.首先在MathType中编辑公式 二.然后点击参数— ...
- node中的path.resolve
path.resolve([arg1,arg2,...])根据参数的不同,返回值存在两种情况. 以下为参数的两种情况: 1.每个参数都不带'/',比如path.resolve(),或者path.res ...
- CEntOS6.5从启动界面直接进入命令行界面
ctrl + alt + F1 ctrl + alt + F2 ctrl + alt + F3 ctrl + alt + F4 ctrl + alt + F5 ctrl + alt + F6 同时按下 ...
- dedecms 后台登录地址
dedecms 后台登录地址 http://www.域名.com/member/index.php