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实现strcmp函数功能示例
Mar 25 Python
Python中的引用和拷贝浅析
Nov 22 Python
用C++封装MySQL的API的教程
May 06 Python
python中threading超线程用法实例分析
May 16 Python
详解Python中表达式i += x与i = i + x是否等价
Feb 08 Python
Python中enumerate()函数编写更Pythonic的循环
Mar 06 Python
替换python字典中的key值方法
Jul 06 Python
python3实现网络爬虫之BeautifulSoup使用详解
Dec 19 Python
Python爬虫实战之12306抢票开源
Jan 24 Python
python函数中将变量名转换成字符串实例
May 11 Python
Pytorch mask-rcnn 实现细节分享
Jun 24 Python
Python基础知识之变量的详解
Apr 14 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 file_get_contents函数读取远程数据超时的解决方法
2015/05/13 PHP
PHP使用Mysqli类库实现完美分页效果的方法
2016/04/07 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
PHP实现计算器小功能
2020/08/28 PHP
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
2013/07/09 Javascript
JavaScript中判断整字类型最简洁的实现方法
2014/11/08 Javascript
bootstrap模态框垂直居中效果
2016/12/03 Javascript
老生常谈javascript中逻辑运算符&&和||的返回值问题
2017/04/13 Javascript
React Native验证码倒计时工具类分享
2017/10/24 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
安装Node.js并启动本地服务的操作教程
2018/05/12 Javascript
javascript中this的用法实践分析
2019/07/29 Javascript
JS如何实现动态添加的元素绑定事件
2019/11/12 Javascript
vue 查看dist文件里的结构(多种方式)
2020/01/17 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
python 读写、创建 文件的方法(必看)
2016/09/12 Python
Python之Scrapy爬虫框架安装及使用详解
2017/11/16 Python
python3 http提交json参数并获取返回值的方法
2018/12/19 Python
对Python w和w+权限的区别详解
2019/01/23 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
CSS3 优势以及网页设计师如何使用CSS3技术
2009/07/29 HTML / CSS
印尼购物网站:iLOTTE
2019/10/16 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
自习课吵闹检讨书范文
2014/09/26 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
公积金贷款承诺书
2015/04/30 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
体育教师教学随笔
2015/08/15 职场文书
《从现在开始》教学反思
2016/02/16 职场文书
辞职信怎么写?
2019/05/21 职场文书
Python关于OS文件目录处理的实例分享
2021/05/23 Python
详解JS数组方法
2021/11/20 Javascript
Win10防火墙白名单怎么设置?Win10添加防火墙白名单方法
2022/04/06 数码科技
MySQL分区路径子分区再分区
2022/04/13 MySQL