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之eval()函数危险性浅析
Jul 03 Python
Python fileinput模块使用实例
Jun 03 Python
Python编程中对文件和存储器的读写示例
Jan 25 Python
Python中遍历字典过程中更改元素导致异常的解决方法
May 12 Python
Python 获取当前所在目录的方法详解
Aug 02 Python
基于Python中单例模式的几种实现方式及优化详解
Jan 09 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
Python 运行.py文件和交互式运行代码的区别详解
Jul 02 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
Python内置方法实现字符串的秘钥加解密(推荐)
Dec 09 Python
python 实现的IP 存活扫描脚本
Dec 10 Python
pytorch 两个GPU同时训练的解决方案
Jun 01 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
global.php
2006/12/09 PHP
用PHP实现维护文件代码
2007/06/14 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
使用PHP反射机制来构造"CREATE TABLE"的sql语句
2019/03/21 PHP
PHP高并发和大流量解决方案整理
2019/12/24 PHP
利用js跨页面保存变量做菜单的方法
2008/01/17 Javascript
基于jquery的获取mouse坐标插件的实现代码
2010/04/01 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
用Node.js通过sitemap.xml批量抓取美女图片
2015/05/28 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
jQuery使用ajax跨域获取数据的简单实例
2016/05/18 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
Vue.js自定义事件的表单输入组件方法
2018/03/08 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
JavaScript类型相关的常用操作总结
2019/02/14 Javascript
小程序实现搜索界面 小程序实现推荐搜索列表效果
2019/05/18 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
基于ajax及jQuery实现局部刷新过程解析
2020/09/12 jQuery
实例讲解React 组件
2020/07/07 Javascript
解决elementUI 切换tab后 el_table 固定列下方多了一条线问题
2020/07/19 Javascript
vue 遮罩层阻止默认滚动事件操作
2020/07/28 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
Python编程生成随机用户名及密码的方法示例
2017/05/05 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
用xpath获取指定标签下的所有text的实例
2019/01/02 Python
Python循环结构的应用场景详解
2019/07/11 Python
基于Html5 canvas实现裁剪图片和马赛克功能及又拍云上传图片 功能
2019/07/09 HTML / CSS
KEETSA环保床垫:更好的睡眠,更好的生活!
2016/11/24 全球购物
GLAMGLOW香港官网:明星出镜前的秘密武器
2017/03/16 全球购物
伦敦一卡通:The London Pass
2018/11/30 全球购物
路政管理专业推荐信
2013/11/11 职场文书
文秘档案管理岗位职责
2014/03/06 职场文书
房地产资料员岗位职责
2014/07/02 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书