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实现数通设备tftp备份配置文件示例
Apr 02 Python
利用Python脚本生成sitemap.xml的实现方法
Jan 31 Python
Python装饰器原理与用法分析
Apr 30 Python
Python Matplotlib 基于networkx画关系网络图
Jul 10 Python
Python assert关键字原理及实例解析
Dec 13 Python
在win64上使用bypy进行百度网盘文件上传功能
Jan 02 Python
python 微信好友特征数据分析及可视化
Jan 07 Python
Python3 pickle对象串行化代码实例解析
Mar 23 Python
python 解决mysql where in 对列表(list,,array)问题
Jun 06 Python
Python 字符串池化的前提
Jul 03 Python
python中的split、rsplit、splitlines用法说明
Oct 23 Python
python中time、datetime模块的使用
Dec 14 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下判断数组中是否存在相同的值array_unique
2008/03/25 PHP
PHP把网页保存为word文件的三种方法
2014/04/01 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
thinkPHP通用控制器实现方法示例
2017/11/23 PHP
用jscript实现新建word文档
2007/06/15 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
js限制文本框只能输入整数或者带小数点的数字
2015/04/27 Javascript
Javascript中prototype属性实现给内置对象添加新的方法
2015/05/14 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
Jquery根据浏览器窗口改变调整大小的方法
2017/02/07 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
vue.js 底部导航栏 一级路由显示 子路由不显示的解决方法
2018/03/09 Javascript
python的多重继承的理解
2017/08/06 Python
Python检查和同步本地时间(北京时间)的实现方法
2018/12/03 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
使用python自动追踪你的快递(物流推送邮箱)
2020/03/17 Python
python matplotlib模块基本图形绘制方法小结【直线,曲线,直方图,饼图等】
2020/04/26 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
拿来就用!Python批量合并PDF的示例代码
2020/08/10 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
MADE法国:提供原创设计师家具
2018/09/18 全球购物
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
金蝶的一道SQL笔试题
2012/12/18 面试题
中学实习教师自我鉴定
2013/12/12 职场文书
教师实习自我鉴定
2013/12/13 职场文书
公务员培训自我鉴定
2014/02/01 职场文书
个人贷款承诺书
2014/03/28 职场文书
库房保管员岗位职责
2014/04/07 职场文书
冬季施工防火方案
2014/05/17 职场文书
幼儿园运动会口号
2014/06/07 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
Python实现Excel文件的合并(以新冠疫情数据为例)
2022/03/20 Python
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python