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写asp详细讲解
Dec 16 Python
有关wxpython pyqt内存占用问题分析
Jun 09 Python
Python编写屏幕截图程序方法
Feb 18 Python
python win32 简单操作方法
May 25 Python
简述:我为什么选择Python而不是Matlab和R语言
Nov 14 Python
pandas表连接 索引上的合并方法
Jun 08 Python
python学习--使用QQ邮箱发送邮件代码实例
Apr 16 Python
Python之Class&Object用法详解
Dec 25 Python
Python使用扩展库pywin32实现批量文档打印实例
Apr 09 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
在python中实现导入一个需要传参的模块
May 12 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设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
Laravel 关联模型-关联新增和关联更新的方法
2019/10/10 PHP
JavaScript While 循环基础教程
2007/04/05 Javascript
Mootools 1.2 手风琴(Accordion)教程
2009/09/15 Javascript
javascript 构造函数强制调用经验总结
2012/12/02 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
使用JavaScript实现网页版Pongo设计思路及源代码分享
2014/06/16 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
AngularJS 路由详解和简单实例
2016/07/28 Javascript
原生JavaScrpit中异步请求Ajax实现方法
2017/11/03 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
JavaScript中this关键字用法实例分析
2018/08/24 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
node.js调用C++函数的方法示例
2018/09/21 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
2019/02/26 Javascript
JavaScript中filter的用法实例分析
2019/02/27 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
CountUp.js数字滚动插件使用方法详解
2019/10/17 Javascript
angular组件间传值测试的方法详解
2020/05/07 Javascript
wxpython 最小化到托盘与欢迎图片的实现方法
2014/06/09 Python
Python获取SQLite查询结果表列名的方法
2017/06/21 Python
Python信息抽取之乱码解决办法
2017/06/29 Python
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
Django中的ajax请求
2018/10/19 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
快速一键生成Python爬虫请求头
2021/03/04 Python
HTML5 video标签(播放器)学习笔记(一):使用入门
2015/04/24 HTML / CSS
毕业生求职的求职信
2013/12/05 职场文书
企业金融服务方案
2014/06/03 职场文书
教师批评与自我批评剖析材料
2014/10/16 职场文书
2014年团支书工作总结
2014/11/14 职场文书
酒店圣诞节活动总结
2015/05/06 职场文书
道歉信范文
2015/05/12 职场文书