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 相关文章推荐
Python3安装Scrapy的方法步骤
Nov 23 Python
Python内置函数delattr的具体用法
Nov 23 Python
Python3生成手写体数字方法
Jan 30 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
详解Python传入参数的几种方法
May 16 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 Python
Spring Boot中使用IntelliJ IDEA插件EasyCode一键生成代码详细方法
Mar 20 Python
python爬虫可以爬什么
Jun 16 Python
Python可以用来做什么
Nov 23 Python
Pandas直接读取sql脚本的方法
Jan 21 Python
Python批量将csv文件转化成xml文件的实例
May 10 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 获取完整url地址
2008/12/20 PHP
PHP无敌近乎加密方式!
2010/07/17 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
PHP高效获取远程图片尺寸和大小的实现方法
2017/10/20 PHP
php封装的pdo数据库操作工具类与用法示例
2019/05/08 PHP
Javascript 对象的解释
2008/11/24 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
jQuery操作元素css样式的三种方法
2014/06/04 Javascript
js正则表达式匹配数字字母下划线等
2015/04/14 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
jQuery+formdata实现上传进度特效遇到的问题
2016/02/24 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
js CSS3实现卡牌旋转切换效果
2017/07/04 Javascript
express 项目分层实践详解
2018/12/10 Javascript
vue路由导航守卫和请求拦截以及基于node的token认证的方法
2019/04/07 Javascript
layui自定义验证,用ajax查询后台是否有重复数据,form.verify的例子
2019/09/06 Javascript
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
如何在现代JavaScript中编写异步任务
2021/01/31 Javascript
Python不规范的日期字符串处理类
2014/06/10 Python
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
Python常用的文件及文件路径、目录操作方法汇总介绍
2015/05/21 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
解决python爬虫中有中文的url问题
2018/05/11 Python
Python中py文件转换成exe可执行文件的方法
2019/06/14 Python
如何使用django的MTV开发模式返回一个网页
2019/07/22 Python
Python logging模块进行封装实现原理解析
2020/08/07 Python
2014年文学毕业生自我鉴定
2014/04/23 职场文书
2014年干部培训工作总结
2014/12/17 职场文书
给老婆的道歉信
2015/01/20 职场文书
试用期辞职信范文
2015/03/02 职场文书
应届生简历自我评价
2015/03/11 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
班主任工作总结范文
2015/08/13 职场文书
Go语言空白表示符_的实例用法
2021/07/04 Golang
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript