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,但 ...
随机推荐
- 将C1Chart数据导出到Excel
大多数情况下,当我们说将图表导出到Excel时,意思是将Chart当成图片导出到Excel中.如果是这样,你可以参考帮助文档中保存和导出C1Chart章节. 不过,也有另一种情况,当你想把图表中的数据 ...
- java之内的工具分享,附带下载链接,方便以后自己寻找
class反编译工具:http://pan.baidu.com/s/1geYvX5L redis客户端工具:http://pan.baidu.com/s/1eRJ4ThC mysql客户端-[mysq ...
- [moka同学笔记]bootstrap基础
1.导航栏的制作 <nav class="nav navbar-default navbar-fixed-top" role="navigation"&g ...
- IE Unknown runtime error
1. 在函数中使用原生的js的时候,有时在IE下会出现Unknown runtime error 火狐下正常 2. 解决办法, 将原生js改成jquery处理兼容问题 document.getElem ...
- [ERROR] Plugin 'InnoDB' init function returned error
今天一大早到公司,计划把开发环境的mysql升级到5.7.15,干净关闭系统后,把目录从5.6指向到5.7,一切正常,重新指向5.6启动时,报下列错误: 2016-10-31 08:13:14 869 ...
- SQL数据库基础(六)
子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这时它可以用在 ...
- 【翻译】Netscaler真实表现性能调整
源地址:https://msandbu.wordpress.com/2014/10/31/netscaler-and-real-performance-tuning/ 作者显然不是以英语为母语的,所以 ...
- Vue基础理论
一 vue的定位 (1)Vue.js是一个构建数据驱动的 web 界面的库. (2)Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件. (3)Vue.js 自身不是一 ...
- mvc项目架构分享系列之架构搭建初步
mvc项目架构分享系列之架构搭建初步 Contents 系列一[架构概览] 0.项目简介 1.项目解决方案分层方案 2.所用到的技术 3.项目引用关系 系列二[架构搭建初步] 4.项目架构各部分解析 ...
- 桥牌笔记 Skill Level 4 C7 小心将吃
南主打5H. 看来问题不大,但要小心南的方块AK会阻塞桥路. 如果方块3-2分布,并且将牌也3-2分布,就很容易. 如果红桃4-1分布,那是死定了. 如果方块4-1分布,还有希望完成的! 为了防止东家 ...