python rsync服务器之间文件夹同步脚本


Posted in Python onAugust 29, 2019

本文实例为大家分享了python rsync服务器之间文件夹同步的具体代码,供大家参考,具体内容如下

About  rsync

配置两台服务器之间3ssh-key后,可以实现自动化无需手动输入密码,脚本如下:

import argparse
import datetime
from functools import partial
import multiprocessing as mp
import os
import paramiko as pmk
import time
 
 
def check_ssh(host, user, port, passwd, dest_path):
 ssh_client = pmk.SSHClient()
 ssh_client.load_system_host_keys()
 ssh_client.set_missing_host_key_policy(pmk.AutoAddPolicy())
 try:
  ssh_client.connect(host, username=user, port=port, timeout=10, password=passwd)
  ssh_client.exec_command('mkdir ' + os.path.join(dest_path, 'data'))
 except BaseException as e:
  print 'failed to connect to host: %r: %r' % (host, e)
  return False
 else:
  return True
 
 
def select_from_file(file_path):
 file_list = []
 if os.path.exists(file_path):
  path_dir = os.listdir(file_path)
  for all_dir in path_dir:
   file_list.append(os.path.join('%s' % all_dir))
 return file_list
 
 
def sync_file(file_name, remote_host, remote_user, remote_port, src_path, dest_path):
 sync_cmd = "rsync -azrvhP --progress -e 'ssh -p " + str(remote_port) + "' --skip-compress=gz/zip/ " + \
    file_name + " " + remote_user + "@" + remote_host + ":" + os.path.join(dest_path,'data')
 print sync_cmd
 os.chdir(src_path)
 os.system(sync_cmd)
 
 
if __name__ == '__main__':
 parser = argparse.ArgumentParser()
 parser.add_argument('-w', '--workers', dest='workers', type=int, default=12)
 parser.add_argument('-H', '--host', dest='host', type=str, default='192.168.254.156')
 parser.add_argument('-u', '--user', dest='user', type=str, default='shubao')
 parser.add_argument('-p', '--password', dest='password', type=str, default='123456')
 parser.add_argument('-P', '--port', dest='port', type=int, default=22)
 parser.add_argument('-r', '--remotepath', dest='remotepath', type=str, default='/home/shubao/')
 parser.add_argument('-s', '--srcpath', dest='srcpath', type=str, default='/home/Jesse/data')
 args = parser.parse_args()
 if not check_ssh(args.host, args.user, args.port, args.password, args.remotepath):
  print 'SSH connect faild!'
  exit(-1)
 pool = mp.Pool(processes=args.workers)
 try:
  while True:
   print "New check start at %s..." % str(datetime.datetime.now())
   file_list_ = select_from_file(args.srcpath)
   print "File_list: "
   print file_list_
   p_work = partial(sync_file, remote_host=args.host, remote_user=args.user, remote_port=args.port,
        src_path=args.srcpath, dest_path=args.remotepath)
   pool.map(p_work, file_list_)
   time.sleep(10)
 finally:
  pool.terminate()
  pool.join()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python pass 语句使用示例
Mar 11 Python
python实现计算倒数的方法
Jul 11 Python
Python 高级专用类方法的实例详解
Sep 11 Python
Python 输入一个数字判断成绩分数等级的方法
Nov 15 Python
Flask框架web开发之零基础入门
Dec 10 Python
详解Python中的测试工具
Jun 09 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
PyTorch中Tensor的数据统计示例
Feb 17 Python
logging level级别介绍
Feb 21 Python
python+selenium+PhantomJS抓取网页动态加载内容
Feb 25 Python
如何学习Python time模块
Jun 03 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
Dec 21 Python
python-tornado的接口用swagger进行包装的实例
Aug 29 #Python
Python csv模块使用方法代码实例
Aug 29 #Python
python datetime中strptime用法详解
Aug 29 #Python
使用OpenCV实现仿射变换—平移功能
Aug 29 #Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 #Python
使用OpenCV实现仿射变换—缩放功能
Aug 29 #Python
python实现两个文件夹的同步
Aug 29 #Python
You might like
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
Jquery-1.9.1源码分析系列(十一)之DOM操作
2015/11/25 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
connection reset by peer问题总结及解决方案
2016/10/21 Javascript
jQuery实现广告条滚动效果
2017/08/22 jQuery
web前端页面生成exe可执行文件的方法
2018/02/08 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
vue动态循环出的多个select出现过的变为disabled(实例代码)
2019/11/10 Javascript
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python获取文件ssdeep值的方法
2014/10/05 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
Python实现的桶排序算法示例
2017/11/29 Python
python pillow模块使用方法详解
2019/08/30 Python
python爬虫中多线程的使用详解
2019/09/23 Python
Django REST框架创建一个简单的Api实例讲解
2019/11/05 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
2020/06/15 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
HTML5手机端弹出遮罩菜单特效代码
2016/01/27 HTML / CSS
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
Android interview questions
2016/12/25 面试题
编辑硕士自荐信范文
2013/11/27 职场文书
医务人员自我评价
2014/01/26 职场文书
关爱女孩行动实施方案
2014/03/13 职场文书
五好文明家庭事迹材料
2014/12/20 职场文书
2015年电话销售工作总结范文
2015/04/20 职场文书
教师文明餐桌光盘行动倡议书
2015/04/28 职场文书
详解Python requests模块
2021/06/21 Python
详解MySQL多版本并发控制机制(MVCC)源码
2021/06/23 MySQL
python代码实现备忘录案例讲解
2021/07/26 Python
Python实现批量自动整理文件
2022/03/16 Python
Java设计模式之代理模式
2022/04/22 Java/Android
教你如何用cmd快速登录服务器
2022/06/10 Servers