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 字符串定义
Sep 25 Python
python定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
Python实现子类调用父类的方法
Nov 10 Python
Windows8下安装Python的BeautifulSoup
Jan 22 Python
Python记录详细调用堆栈日志的方法
May 05 Python
Python进阶篇之字典操作总结
Nov 16 Python
基于Django模板中的数字自增(详解)
Sep 05 Python
tensorflow识别自己手写数字
Mar 14 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
Apr 12 Python
在pytorch中动态调整优化器的学习率方式
Jun 24 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
python全面解析接口返回数据
Feb 12 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桌面中心(二) 数据库写入
2007/03/11 PHP
Ajax PHP简单入门教程代码
2008/04/25 PHP
php缩放gif和png图透明背景变成黑色的解决方法
2014/10/14 PHP
php获取远程文件的内容和大小
2015/11/03 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
2017/01/12 PHP
JavaScript高级程序设计
2006/12/29 Javascript
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
改变javascript函数内部this指针指向的三种方法
2010/04/23 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
jquery滚动条插件(可以自定义)
2016/12/11 Javascript
jQuey将序列化对象在前台显示地实现代码(方法总结)
2016/12/13 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
详解vue axios中文文档
2017/09/12 Javascript
Vue 过滤器filters及基本用法
2017/12/26 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
layer弹出层显示在top顶层的方法
2019/09/11 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
selenium2.0中常用的python函数汇总
2019/08/05 Python
win10环境下配置vscode python开发环境的教程详解
2019/10/16 Python
Python新手学习标准库模块命名
2020/05/29 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
Lookfantastic德国官网:英国知名美妆购物网站
2017/06/11 全球购物
Reformation官网:美国女装品牌
2018/09/14 全球购物
北京某公司的.net笔试题
2014/03/20 面试题
《难忘的泼水节》教学反思
2014/02/27 职场文书
乡村卫生服务一体化管理实施方案
2014/03/30 职场文书
捐助感谢信
2015/01/22 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
python 安全地删除列表元素的方法
2022/03/16 Python
Python实现提取PDF简历信息并存入Excel
2022/04/02 Python