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 分析Nginx访问日志并保存到MySQL数据库实例
Mar 13 Python
Python重新引入被覆盖的自带function
Jul 16 Python
Python实现简易端口扫描器代码实例
Mar 15 Python
python爬虫爬取淘宝商品信息
Feb 23 Python
Numpy 将二维图像矩阵转换为一维向量的方法
Jun 05 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
基于python实现学生管理系统
Oct 17 Python
使用CodeMirror实现Python3在线编辑器的示例代码
Jan 14 Python
Python求离散序列导数的示例
Jul 10 Python
Python2与Python3的区别点整理
Dec 12 Python
Python面向对象封装操作案例详解
Dec 31 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 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遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
PHP中redis的用法深入解析
2014/02/20 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
PHP实现UTF-8文件BOM自动检测与移除实例
2014/11/05 PHP
网页javascript精华代码集
2007/01/24 Javascript
走出JavaScript初学困境—js初学
2008/12/29 Javascript
Javascript aop(面向切面编程)之around(环绕)分析
2015/05/01 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
JavaScript焦点事件、鼠标事件和滚轮事件使用详解
2016/01/15 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
利用原生JS实现data方法示例代码
2019/05/28 Javascript
微信小程序中如何使用flyio封装网络请求
2019/07/03 Javascript
Layui多选只有最后一个值的解决方法
2019/09/02 Javascript
[01:10:02]IG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[47:03]完美世界DOTA2联赛PWL S3 Galaxy Racer vs Phoenix 第二场 12.10
2020/12/13 DOTA
python selenium执行所有测试用例并生成报告的方法
2019/02/13 Python
python基于pdfminer库提取pdf文字代码实例
2019/08/15 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Django框架配置mysql数据库实现过程
2020/04/22 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
浅谈OpenCV中的新函数connectedComponentsWithStats用法
2020/07/05 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
如何利用Python写个坦克大战
2020/11/18 Python
完美解决IE8下不兼容rgba()的问题
2017/03/31 HTML / CSS
Myprotein加拿大官网:欧洲第一的运动营养品牌
2018/01/06 全球购物
美国香薰蜡烛品牌:PADDYWAX
2018/10/06 全球购物
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
中考标语大全
2014/06/05 职场文书
房产公证委托书范本
2014/09/20 职场文书
升学宴学生致辞
2015/07/27 职场文书
工作感想范文
2015/08/07 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
go语言中切片与内存复制 memcpy 的实现操作
2021/04/27 Golang