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算法学习之计数排序实例
Dec 18 Python
详解Python中break语句的用法
May 14 Python
Python AES加密模块用法分析
May 22 Python
python 信息同时输出到控制台与文件的实例讲解
May 11 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
Jun 04 Python
Python中变量的输入输出实例代码详解
Jul 28 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 15 Python
Python Flask异步发送邮件实现方法解析
Aug 01 Python
Django生成数据库及添加用户报错解决方案
Oct 09 Python
Keras保存模型并载入模型继续训练的实现
Feb 20 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
2006/12/23 PHP
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
PHP使用GETDATE获取当前日期时间作为一个关联数组的方法
2015/03/19 PHP
ThinkPHP框架实现的邮箱激活功能示例
2018/06/15 PHP
jquery判断checkbox(复选框)是否被选中的代码
2010/10/20 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
2015/06/26 Javascript
BootStrap glyphicons 字体图标实现方法
2016/05/01 Javascript
jQuery实现checkbox列表的全选、反选功能
2016/11/24 Javascript
JQuery页面随滚动条动态加载效果的简单实现(推荐)
2017/02/08 Javascript
React Native如何消除启动时白屏的方法
2017/08/08 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
2020/04/11 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
vue@cli3项目模板怎么使用public目录下的静态文件
2020/07/07 Javascript
JS性能优化实现方法及优点进行
2020/08/30 Javascript
python模拟鼠标拖动操作的方法
2015/03/11 Python
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python学习小技巧之列表项的排序
2017/05/20 Python
Python实现多进程的四种方式
2019/02/22 Python
Python txt文件如何转换成字典
2020/11/03 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
HTML5 Web存储方式的localStorage和sessionStorage进行数据本地存储案例应用
2012/12/09 HTML / CSS
上海方立数码笔试题
2013/10/18 面试题
管理失职检讨书
2014/02/12 职场文书
学生党员批评与自我批评
2014/10/15 职场文书
初中差生评语
2014/12/29 职场文书
2015年人事科工作总结
2015/04/28 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
学生检讨书范文
2019/06/24 职场文书
Python预测分词的实现
2021/06/18 Python
win10键盘驱动怎么修复?Win10键盘驱动修复小技巧
2022/04/06 数码科技
Win10系统搭建ftp文件服务器详细教程
2022/08/05 Servers