#!/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

最新文章

  1. CouchDB简介
  2. 使用Android点击按钮跳转页面
  3. [ubuntu14.04 amd64 ]搜狗拼音輸入法安裝
  4. TP-Link路由器刷dd-wrt的linux,无线信号增强不少
  5. 观nginx与lvs负载均衡的较量
  6. js正则--验证6-12位至少包含数字、小写字母和大些字母中至少两种字符,
  7. web.xml 中的listener、 filter、servlet 加载顺序
  8. rtx信息泄漏利结合弱口令导致被批量社工思路
  9. 关于C#控制台传递参数和接收参数
  10. 在SQL Server 实现递归
  11. SQLite header and source version mismatch 解决方案
  12. IOS 可靠性测试 iosMonkey
  13. C++实验七
  14. 【转】asp.net Core 系列【一】——创建Web应用
  15. TiDB入门(四):从入门到“跑路”
  16. Cisco HSRP热备份路由器协议配置
  17. 开源词袋模型DBow3原理&amp;源码(二)ORB特征的保存和读取
  18. shell test判断命令
  19. jpegtran图片压缩工具
  20. jQuery学习总结1

热门文章

  1. JS 跨域问题常见的五种解决方式
  2. 2015腾讯暑期实习生 Web前端开发 面试经历
  3. Dir /U /c 输出Unicode字符的特性
  4. c# 编程语言 编译器 Roslyn
  5. Configuring a Windows Azure Project
  6. bootstrap - table
  7. 【Bootstrap基础学习】03 Bootstrap插件示例
  8. 别误用IsDigit与IsNumber函数
  9. 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制
  10. 重新想象 Windows 8.1 Store Apps (72) - 新增控件: AppBar, CommandBar