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生成随机验证码(中文验证码)示例
Apr 03 Python
python difflib模块示例讲解
Sep 13 Python
使用python3+xlrd解析Excel的实例
May 04 Python
Pandas:DataFrame对象的基础操作方法
Jun 07 Python
python求平均数、方差、中位数的例子
Aug 22 Python
python+rsync精确同步指定格式文件
Aug 29 Python
python 的 openpyxl模块 读取 Excel文件的方法
Sep 09 Python
python 扩展print打印文件路径和当前时间信息的实例代码
Oct 11 Python
python opencv图片编码为h264文件的实例
Dec 12 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
python游戏开发之pygame实现接球小游戏
Apr 22 Python
python实现双链表
May 25 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 运行效率总结(提示程序速度)
2009/11/26 PHP
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
2010/05/16 PHP
Linux下实现PHP多进程的方法分享
2012/08/16 PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
2013/04/28 PHP
php设置页面超时时间解决方法
2015/09/22 PHP
Ajax提交与传统表单提交的区别说明
2014/02/07 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
JQuery的加载和选择器用法简单示例
2019/05/13 jQuery
JavaScrip数组去重操作实例小结
2019/06/20 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
Vue父子组件传值的一些坑
2020/09/16 Javascript
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python opencv实现图片旋转矩形分割
2018/07/26 Python
python3基于TCP实现CS架构文件传输
2018/07/28 Python
对python周期性定时器的示例详解
2019/02/19 Python
Python爬虫之UserAgent的使用实例
2019/02/21 Python
Python的高阶函数用法实例分析
2019/04/11 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
Zalando Lounge瑞士:时尚与生活方式购物俱乐部
2020/03/12 全球购物
Loreto Gallo英国:欧洲领先的在线药房
2021/01/21 全球购物
原料仓管员岗位职责
2014/04/12 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
投资建议书模板
2014/05/12 职场文书
作风转变年心得体会
2014/10/22 职场文书
公路局群众路线教育实践活动第一阶段工作汇报
2014/10/25 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
毕业证明书
2015/06/19 职场文书
高中地理教学反思
2016/02/19 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
Python if else条件语句形式详解
2022/03/24 Python
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL