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调用短信猫控件实现发短信功能实例
Jul 04 Python
在Python中使用pngquant压缩png图片的教程
Apr 09 Python
python的staticmethod与classmethod实现实例代码
Feb 11 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
Python检测网络延迟的代码
May 15 Python
Python实现模拟浏览器请求及会话保持操作示例
Jul 30 Python
通过pycharm使用git的步骤(图文详解)
Jun 13 Python
python实现五子棋游戏
Jun 18 Python
python Django中models进行模糊查询的示例
Jul 18 Python
Python 3.10 的首个 PEP 诞生,内置类型 zip() 迎来新特性(推荐)
Jul 03 Python
python高级特性简介
Aug 13 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 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
默默简单的写了一个模板引擎
2007/01/02 PHP
PHP连接MSSQL2008/2005数据库(SQLSRV)配置实例
2014/10/22 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
用JavaScript隐藏控件的方法
2009/09/21 Javascript
JS date对象的减法处理实现代码
2010/12/28 Javascript
Javascript中的window.event.keyCode使用介绍
2011/04/26 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
JavaScript获取数组最小值和最大值的方法
2015/06/09 Javascript
分享网页检测摇一摇实例代码
2016/01/14 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
Vue中UI组件库之Vuex与虚拟服务器初识
2019/05/07 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
ES6学习笔记之let与const用法实例分析
2020/01/22 Javascript
python中使用enumerate函数遍历元素实例
2014/06/16 Python
python生成器表达式和列表解析
2016/03/10 Python
spyder常用快捷键(分享)
2017/07/19 Python
深入理解Django中内置的用户认证
2017/10/06 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
对python周期性定时器的示例详解
2019/02/19 Python
python代码编写计算器小程序
2020/03/30 Python
python:批量统计xml中各类目标的数量案例
2020/03/10 Python
Python filter过滤器原理及实例应用
2020/08/18 Python
python基于selenium爬取斗鱼弹幕
2021/02/20 Python
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
大学生毕业求职简历的自我评价
2013/10/24 职场文书
周年庆典邀请函范文
2014/01/23 职场文书
2014年创先争优活动总结
2014/05/04 职场文书
2014年文秘工作总结
2014/11/25 职场文书
服务员岗位职责
2015/02/03 职场文书
大学生自荐信范文
2015/03/05 职场文书
2016教师国培研修感言
2015/12/08 职场文书
javascript函数式编程基础
2021/09/15 Javascript