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实现zencart产品数据导入到magento(python导入数据)
Apr 03 Python
python的文件操作方法汇总
Nov 10 Python
全面分析Python的优点和缺点
Feb 07 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
centos7中安装python3.6.4的教程
Dec 11 Python
selenium中get_cookies()和add_cookie()的用法详解
Jan 06 Python
Python while循环使用else语句代码实例
Feb 07 Python
python实现翻译word表格小程序
Feb 27 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 Python
Python字符串函数strip()原理及用法详解
Jul 23 Python
python爬虫使用requests发送post请求示例详解
Aug 05 Python
python+django+selenium搭建简易自动化测试
Aug 19 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读取30天之内的根据算法排序的代码
2008/04/06 PHP
php函数array_merge用法一例(合并同类数组)
2013/02/03 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
用js实现手把手教你月入万刀(转贴)
2007/11/07 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
jquery ajax对特殊字符进行转义防止js注入使用示例
2013/11/21 Javascript
javascript运行机制之this详细介绍
2014/02/07 Javascript
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
javascript框架设计读书笔记之数组的扩展与修复
2014/12/02 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
详解JavaScript中void语句的使用
2015/06/04 Javascript
详解JavaScript for循环中发送AJAX请求问题
2020/06/23 Javascript
JavaScript数据操作_浅谈原始值和引用值的操作本质
2016/08/23 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
JavaScript继承定义与用法实践分析
2018/05/28 Javascript
模块化react-router配置方法详解
2019/06/03 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
2020/07/20 Javascript
Python3 能振兴 Python的原因分析
2014/11/28 Python
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
Python实现基本线性数据结构
2016/08/22 Python
Python编程之Re模块下的函数介绍
2017/10/28 Python
python使用epoll实现服务端的方法
2018/10/16 Python
Python完成毫秒级抢淘宝大单功能
2019/06/06 Python
python 求定积分和不定积分示例
2019/11/20 Python
Django用数据库表反向生成models类知识点详解
2020/03/25 Python
Django 5种类型Session使用方法解析
2020/04/29 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
eBay美国官网:eBay.com
2020/10/24 全球购物
2016年猴年新春致辞
2015/08/01 职场文书
趣味运动会广播稿
2015/08/19 职场文书
SpringBoot2零基础到精通之数据库专项精讲
2022/03/22 Java/Android
JS轻量级函数式编程实现XDM三
2022/06/16 Javascript