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 set集合类型操作总结
Nov 07 Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 Python
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
Nov 05 Python
tensorflow构建BP神经网络的方法
Mar 12 Python
python实现五子棋小程序
Jun 18 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
详解Python用三种方式统计词频的方法
Jul 29 Python
在django中自定义字段Field详解
Dec 03 Python
Python chardet库识别编码原理解析
Feb 18 Python
python 实现仿微信聊天时间格式化显示的代码
Apr 17 Python
Python获取android设备cpu和内存占用情况
Nov 15 Python
python中HTMLParser模块知识点总结
Jan 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
咖啡常见的种类
2021/03/03 新手入门
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
zf框架的db类select查询器join链表使用示例(zend框架)
2014/03/14 PHP
CodeIgniter常用知识点小结
2016/05/26 PHP
PHP实现一个按钮点击上传多个图片操作示例
2020/01/23 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
写了一个layout,拖动条连贯,内容区可为iframe
2007/08/19 Javascript
初窥JQuery-Jquery简介 入门了解篇
2010/11/25 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
Javascript 多浏览器兼容总结(实战经验)
2013/10/30 Javascript
解析JavaScript中点号“.”的多义性
2013/12/02 Javascript
JQuery实现左右滚动菜单特效
2015/09/28 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
2016/01/21 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
JS实现的简单拖拽购物车功能示例【附源码下载】
2018/01/03 Javascript
浅谈Vue下使用百度地图的简易方法
2018/03/23 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
Python ORM框架SQLAlchemy学习笔记之数据查询实例
2014/06/10 Python
python与C互相调用的方法详解
2017/07/14 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
Windows 64位下python3安装nltk模块
2018/09/19 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
2019/04/29 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
类和结构的区别
2012/08/15 面试题
十八届三中全会学习方案
2014/02/16 职场文书
六查六看自查报告
2014/10/14 职场文书
群众路线领导班子整改方案
2014/10/25 职场文书