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求斐波那契数列示例分享
Feb 14 Python
python常用知识梳理(必看篇)
Mar 23 Python
对numpy中array和asarray的区别详解
Apr 17 Python
深入解析python中的实例方法、类方法和静态方法
Mar 11 Python
Python中生成一个指定长度的随机字符串实现示例
Nov 06 Python
Python基础之列表常见操作经典实例详解
Feb 26 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
Python join()函数原理及使用方法
Nov 14 Python
Python logging自定义字段输出及打印颜色
Nov 30 Python
python中remove函数的踩坑记录
Jan 04 Python
python 高阶函数简单介绍
Feb 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
thinkphp模板的包含与渲染实例分析
2014/11/26 PHP
php随机获取金山词霸每日一句的方法
2015/07/09 PHP
Thinkphp框架 表单自动验证登录注册 ajax自动验证登录注册
2016/12/27 PHP
Aster vs KG BO3 第一场2.18
2021/03/10 DOTA
js 数组操作代码集锦
2009/04/28 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
JS实现两表格里数据来回转移的方法
2015/05/28 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
使用jQuery Ajax 请求webservice来实现更简练的Ajax
2016/08/04 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
[03:04]DOTA2英雄基础教程 影魔
2013/12/11 DOTA
python 将字符串转换成字典dict
2013/03/24 Python
python处理cookie详解
2014/02/07 Python
详解Python当中的字符串和编码
2015/04/25 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
python线程池threadpool实现篇
2018/04/27 Python
浅谈Python大神都是这样处理XML文件的
2019/05/31 Python
检测python爬虫时是否代理ip伪装成功的方法
2019/07/12 Python
python实现身份证实名认证的方法实例
2019/11/08 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
Python基于numpy模块实现回归预测
2020/05/14 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
HTML5+CSS3 实现灵动的动画 TAB 切换效果(DEMO)
2017/09/15 HTML / CSS
DHC美国官网:日本通信销售第一的化妆品品牌
2017/11/12 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
毕业论文致谢怎么写
2015/05/14 职场文书
画展观后感
2015/06/17 职场文书
厉行节约工作总结
2015/08/12 职场文书
2016年大学光棍节活动总结
2016/04/05 职场文书
阿里云日志过滤器配置日志服务
2022/04/09 Servers