#!/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的更多相关文章

  1. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM

    刚过去的周五(3-14)例行地主持了技术会议,主题正好是<UI层的设计模式——从Script.Code Behind到MVC.MVP.MVVM>,是前一天晚上才定的,中午花了半小时准备了下 ...

  2. 页面中多个script块之间的关系

     一:函数声明与函数定义表达式在函数调用间的区别 <script type="text/javascript"> doA(); var doA = function(a ...

  3. javaScript中的小细节-script标签中的预解析

    首先介绍预解析,虽然预解析字面意思很好理解,但是却是出坑出的最多的地方,也是bug经常会有的地方,利用好预解析的特性可以解决很多问题,并且提高代码的质量及数量,浏览器在解析代码前会把变量的声明和函数( ...

  4. ABP源码分析三十七:ABP.Web.Api Script Proxy API

    ABP提供Script Proxy WebApi为所有的Dynamic WebApi生成访问这些WebApi的JQuery代理,AngularJs代理以及TypeScriptor代理.这些个代理就是j ...

  5. shell script 执行常用的两种方式

    2016-11-17 直接输入脚本名执行 ./script #!/bin/bash# /root/shell/001 # 2016-11-17 test for script running name ...

  6. js原生跨域--用script标签实现

    刚刚从培训班学习完,总想写一下东西,自从进入了这个院子,每次出现问题,总是能找到一些答案,给我一些帮助. 作为新手,就写一下简单的吧,院子里面有很多大牛, 说句实话,他们的很多代码我都看不懂. 我就写 ...

  7. script标签中defer和async属性的区别

    这篇文章来源于JS高级程序设计第三版中关于script标签的介绍,结合查阅的资料写下的学习笔记. 向html页面中插入javascript代码的主要方法就是通过script标签.其中包括两种形式,第一 ...

  8. java script第一篇(按钮全选的实现)

    今天刚学了java script,记录下学习新知识的点滴.以下是操作步骤.鉴于我是初级者,如有错误,恳请读者指正.万分谢谢. 1.新建一个文档(用NotePad软件,为了使得在浏览器中打开不是乱码,在 ...

  9. script在html中的摆放位置

    以前一直觉得script在html中的任何位置都可以,今天做一个需求的时候才更正了自己的错误思想啊--script的位置也不是随便放的. 首先是想实现一个select标签,有是和无两个option,但 ...

随机推荐

  1. 【Win10】探索 Windows 10 10586 之 JumpList(跳转列表)

    Windows 10 10586 出来了也挺久的了,应该大部分都从 10240 升级到这个版本了.在 10586 中,微软添加了 200 多个新的 API,具体 API 的变动,大家可以点击下面这个链 ...

  2. ADO.NET 连接方式和非链接方式访问数据库

    一.//连接方式访问数据库的主要步骤(利用DataReader对象实现数据库连接模式) 1.创建连接对象(连接字符串) SqlConnection con = new SqlConnection(Co ...

  3. MEF核心笔记(6)让 MEF 拥抱 AOP

    场景: 最近推荐同事在项目中使用起了 MEF,用其构建一个插件式的多人开发框架,因为该框架不是让我去设计了,所以对于 MEF 和 IOC 等概念不是很了解的同事,便会出现各种问题.接入 AOP 便是其 ...

  4. 【原创】本地通过IIS设置开发的localhost网站的域名改为个性域名方法

    效果图:   操作步骤如下:  第一步: 在本地IIS上新建个网站,如下图所示      第二步,修改host文件       加配置节点如下图所示       第三步,在vs里面找到你的web项目, ...

  5. Oracle级联查询

    在ORACLE 数据库中有一种方法可以实现级联查询   select  *                //要查询的字段 from table              //具有子接点ID与父接点I ...

  6. 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP

    [源码下载] 重新想象 Windows 8 Store Apps (62) - 通信: Socket TCP, Socket UDP 作者:webabcd 介绍重新想象 Windows 8 Store ...

  7. DistributedCache小记

    一.DistributedCache简介 DistributedCache是hadoop框架提供的一种机制,可以将job指定的文件,在job执行前,先行分发到task执行的机器上,并有相关机制对cac ...

  8. R语言-神经网络包RSNNS

    code{white-space: pre;} pre:not([class]) { background-color: white; }if (window.hljs && docu ...

  9. mysql ALL_O_DIRECT引发的unaligned AIO/DIO导致hang

    公司内部有一套mysql环境,使用的是percona server分支(和其他几十套环境的版本.参数完全相同),就这套环境每隔两三天就会hang一次,关键hang的时候服务器cpu也就是百分之三四十, ...

  10. gulp小记(无刷新重载样式)

    之前在使用sass的时候,使用了一个不错的工具koala,其实它的原理就是监视sass文件的变化,去编译css而gulp也能为我们做这样的事并且更多 使用gulp之前我们要做一些准备工作 1)安装no ...