MongodbBackup Script
#!/usr/bin/env python
# _*_coding:utf-8_*_
# Author: "Edward.Liu"
# Author-Email: lonnyliu@126.com """
mongodbbackup script Rewrite 1.首先在 Mongodb服务器进行 mongodb 的数据备份
2.将备份文件进行打包
3.将 tar 包文件传送到远端服务器
4.脚本以选项的方式进行
例如: ./mongodbbackup.py -H <ipaddress>
""" import paramiko
import argparse
import sys
import subprocess
import os
import datetime
import tarfile
import shutil class SSHConnection(object):
"""""" # ----------------------------------------------------------------------
def __init__(self, host, username, password, port=22):
"""Initialize and setup connection"""
self.sftp = None
self.sftp_open = False # open SSH Transport stream
self.transport = paramiko.Transport((host, port)) self.transport.connect(username=username, password=password) # ----------------------------------------------------------------------
def _openSFTPConnection(self):
"""
Opens an SFTP connection if not already open
"""
if not self.sftp_open:
self.sftp = paramiko.SFTPClient.from_transport(self.transport)
self.sftp_open = True # ----------------------------------------------------------------------
def put(self, local_path, remote_path=None):
"""
Copies a file from the local host to the remote host
"""
self._openSFTPConnection()
self.sftp.put(local_path, remote_path) # ----------------------------------------------------------------------
def close(self):
"""
Close SFTP connection and ssh connection
"""
if self.sftp_open:
self.sftp.close()
self.sftp_open = False
self.transport.close() class MongodbBackup(object):
# ----------------------------------------------------------------------------
def local_backup(self, tarfile_name, Now, mongodb_DB_Name):
### Set Mongodb Info---------
mongodb_Host = 'localhost'
mongodb_Port = 27017
mongodb_Bin_Home = '/install/mongodb/bin/mongodump'
mongodb_Back_Dir = '/software/mongodb_back'
mongodb_Backup_Command = "%s -h %s:%s -d %s -o %s > /dev/null" % (
mongodb_Bin_Home, mongodb_Host, mongodb_Port, mongodb_DB_Name, mongodb_Back_Dir)
### Set Mongodb Info ---->End ### Start Backup Mongodb
if os.path.exists(mongodb_Back_Dir):
print "\033[32m***********String Mongodb Backing************\033[0m"
mongodb_Backup_Start = subprocess.Popen(mongodb_Backup_Command, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
mongodb_Backup_Start.wait()
if mongodb_Backup_Start.returncode == 0:
print "\033[32m*****Mongodb Backup OK!!!*****\033[0m"
else:
print "\033[31m*****Mongodb Backup Failed!!!!!*****\033[0m"
else:
os.mkdir(mongodb_Back_Dir)
print "\033[32m***********String Mongodb Backing************\033[0m"
mongodb_Backup_Start = subprocess.Popen(mongodb_Backup_Command, shell=True, stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
mongodb_Backup_Start.wait()
if mongodb_Backup_Start.returncode == 0:
print "\033[32m*****Mongodb Backup OK!!!*****\033[0m"
else:
print "\033[31m*****Mongodb Backup Failed!!!!!*****\033[0m"
### Backup Mongodb --->End ### Start Package Mongodb Files
os.chdir(mongodb_Back_Dir)
tar = tarfile.open(tarfile_name, "w:gz")
tar.add(mongodb_DB_Name)
tar.close()
if os.path.exists(tarfile_name):
print "\033[32m..........Packaging Is SuccessFul!!!\033[0m"
else:
print "\033[32m..........Packaging Is Failed!!!\033[0m"
### Package Mongodb -->End if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Mongodb Backup Rewrite')
parser.add_argument('-H', '--Host', help="Send backupfiles Host IP", required='True')
parser.add_argument('-u', '--user', help='Remote Host User', default='root')
if len(sys.argv) <= 1:
parser.print_help()
sys.exit(1)
### Set Use Info
mongodb_DB_Name = 'ceshi'
Now = datetime.datetime.now().strftime('%Y-%m-%d-%H')
backup_file_name = "Mongodb-%s-%s.tar.gz" % (mongodb_DB_Name, Now)
password = "RPBqoTbJyuhaHVRrc#RX23ox=" LocalBackupFiles = "/software/mongodb_back/%s" % backup_file_name
Remote_Backup_Path = "/home/general/depository/mongodbbackup_files/%s" % backup_file_name
### Set Use -->End
M_Backup = MongodbBackup()
M_Backup.local_backup(backup_file_name, Now, mongodb_DB_Name)
args = parser.parse_args()
print "\033[31mSend Backup Files To Remote Server\033[0m"
ssh = SSHConnection(args.Host, args.user, password)
ssh.put(local_path=LocalBackupFiles, remote_path=Remote_Backup_Path)
ssh.close()
### Empty LocalBackup directory
shutil.rmtree('/software/mongodb_back')
### Empty LocalBackup -->End
MongodbBackup Script的更多相关文章
- 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...
- 页面中多个script块之间的关系
一:函数声明与函数定义表达式在函数调用间的区别 <script type="text/javascript"> doA(); var doA = function(a ...
- javaScript中的小细节-script标签中的预解析
首先介绍预解析,虽然预解析字面意思很好理解,但是却是出坑出的最多的地方,也是bug经常会有的地方,利用好预解析的特性可以解决很多问题,并且提高代码的质量及数量,浏览器在解析代码前会把变量的声明和函数( ...
- ABP源码分析三十七:ABP.Web.Api Script Proxy API
ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是j ...
- shell script 执行常用的两种方式
2016-11-17 直接输入脚本名执行 ./script #!/bin/bash# /root/shell/001 # 2016-11-17 test for script running name ...
- js原生跨域--用script标签实现
刚刚从培训班学习完,总想写一下东西,自从进入了这个院子,每次出现问题,总是能找到一些答案,给我一些帮助. 作为新手,就写一下简单的吧,院子里面有很多大牛, 说句实话,他们的很多代码我都看不懂. 我就写 ...
- script标签中defer和async属性的区别
这篇文章来源于JS高级程序设计第三版中关于script标签的介绍,结合查阅的资料写下的学习笔记. 向html页面中插入javascript代码的主要方法就是通过script标签.其中包括两种形式,第一 ...
- java script第一篇(按钮全选的实现)
今天刚学了java script,记录下学习新知识的点滴.以下是操作步骤.鉴于我是初级者,如有错误,恳请读者指正.万分谢谢. 1.新建一个文档(用NotePad软件,为了使得在浏览器中打开不是乱码,在 ...
- script在html中的摆放位置
以前一直觉得script在html中的任何位置都可以,今天做一个需求的时候才更正了自己的错误思想啊--script的位置也不是随便放的. 首先是想实现一个select标签,有是和无两个option,但 ...
随机推荐
- [爬虫学习笔记]Url过滤模块UrlFilter
Url Filter则是对提取出来的URL再进行一次筛选.不同的应用筛选的标准是不一样的,比如对于baidu/google的搜索,一般不进行筛选,但是对于垂直搜索或者定向抓取的应用,那 ...
- C#验证身份证号码
一.18位的身份证号码 如:130429####%%%%00781.1~6位为地区代码,其中1.2位数为各省级政府的代码,3.4位数为地.市级政府的代码,5.6位数为县.区级政府代码.如13(河北省) ...
- ActiveReports 报表控件官方中文入门教程 (2)-创建、数据源、浏览以及发布
本篇文章将阐述首次使用 ActiveReports 报表控件 的方法,包括添加报表文件.绑定数据源以及如何发布报表等内容. ActiveReports 报表控件官方中文入门教程 (1)-安装.激活以及 ...
- lavarel框架中如何使用ajax提交表单
开门见山,因为laravel以post形式提交数据时候需要加{{csrf_field()}}防止跨站攻击,所以当你用ajax提交表单时候自然也要加 在网上看了很多的解决方式,我是用下面这种方法解决的: ...
- Visual Studio中设置默认VC++路径
菜单"View" -> "Other Windows" -> "Property Manager" 选择对应的配置并修改即可.
- ACdream 1214---矩阵连乘
ACdream 1214---矩阵连乘 Problem Description You might have noticed that there is the new fashion among r ...
- 205 Isomorphic Strings
Given two strings s and t, determine if they are isomorphic. Two strings are isomorphic if the chara ...
- 设计模式总结篇系列:命令模式(Command)
在程序设计中,经常会遇到一个对象需要调用另外一个对象的某个方法以达到某种目的,在此场景中,存在两个角色:请求发出者和请求接收者.发出者发出请求,接收者接收请求并进行相应处理.有时候,当需要对请求发出者 ...
- ANSI X9.19 MAC算法
/// <summary> /// 获取MAC校验字节数据 /// </summary> /// <param name="bankData"> ...
- hdu 2952 Counting Sheep
本题来自:http://acm.hdu.edu.cn/showproblem.php?pid=2952 题意:上下左右4个方向为一群.搜索有几群羊 #include <stdio.h> # ...