python rsync服务器之间文件夹同步脚本

本文实例为大家分享了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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python实现两个文件夹的同步

    其实无论windows还是Linux,简单地去实现两个两个文件夹的同步只需系统自带的复制命令加参数就可以了. WINDOWS : xcopy 源文件夹\* 目标文件夹 /s /e /y Linux : cp -r 源文件夹/* 目标文件夹 这里使用python来实现这些基本功能,并增加一些去重之类的增强功能. 1.复制源文件夹中文件至目标文件夹 要想同步两个文件夹中的数据,基本思路首先需要遍历源文件夹中的信息,将源文件夹中的文件复制到目标文件夹. 遍历文件夹采用os中的listdir函数就可以了

  • Python FTP两个文件夹间的同步实例代码

    具体代码如下所示: # -*- coding: utf-8 -*- ''''''' ftp自动检测源文件夹的更新,将源文件夹更新的内容拷贝到目标文件夹中 使用树的层序遍历算法,支持深度目录拷贝 ''' import os from ftplib import FTP import os,sys,string,datetime,time import shutil import socket class MyUpdateMonitor(object): def __init__(self, hos

  • python rsync服务器之间文件夹同步脚本

    本文实例为大家分享了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

  • linux系统中rsync+inotify实现服务器之间文件实时同步

    之前做了"ssh信任与scp自动传输脚本"的技术文档,此方案是作为公司里备份的方法,但在实际的运行中,由于主服务器在给备份服务器传输的时候,我们的主服务器需要备份的文件是实时.不停的产生的,造成不知道主服务器给备份服务器传输了多少文件,磁盘空间就那么大,做备份的原因:一个是为了保持文件,另外一个是解决主服务器的磁盘饱满问题,但由于不知道备份服务器到底接收了多少文件,所以主服务器里的文件不敢删除(如果没有备份的情况下删除,问题就严重了,我这个是政府的项目,服务器里的文件都是重要的,删错了

  • Python 实现两个服务器之间文件的上传方法

    如下所示: # coding: utf-8 import paramiko import MySQLdb def main(): connection=MySQLdb.connect(host='10.10.41.22',user='root',passwd='root',db='Trojan',port=3306) cur=connection.cursor() sql ='select count(*) from blacklist;' cur.execute(sql) count = cu

  • Python实现合并同一个文件夹下所有PDF文件的方法示例

    本文实例讲述了Python实现合并同一个文件夹下所有PDF文件的方法.分享给大家供大家参考,具体如下: 一.需求说明 下载了网易云课堂的吴恩达免费的深度学习的pdf文档,但是每一节是一个pdf,我把这些PDF文档放在一个文件夹下,希望合并成一个PDF文件.于是写了一个python程序,很好的解决了这个问题. 二.数据形式 三.合并效果 四.python代码实现 # -*- coding:utf-8*- import sys reload(sys) sys.setdefaultencoding('

  • Python实现拷贝/删除文件夹的方法详解

    本文实例讲述了Python实现拷贝 删除文件夹的方法.分享给大家供大家参考,具体如下: 1. 拷贝文件夹 from shutil import copytree, ignore_patterns copytree(source, destination, ignore=ignore_patterns('*.pyc', 'tmp*')) 注:shutil.copytree实现 def copytree(src, dst, symlinks=False, ignore=None): names =

  • python 与服务器的共享文件夹交互方法

    需求:从服务器拷贝照片到本地,然后再从本地照片筛选照片. 问题:从服务器拷贝到照片本地,太慢,速度只有20~30K,不能忍. 然后想到,利用python直接从服务器的共享文件夹筛选照片. 本以为还要什么socket通信之类,没想到只需将服务器共享文件夹地址当作本地电脑路径就万事大吉了.只需注意路径地址中的正反斜杠即可. 直接从window文件夹地址复制的路径如下: path = "\\11.64.222.50\dataPic" 若不经修改,会报IO error的错误. 改成 path

  • 利用Python实现自动化监控文件夹完成服务部署

    目录 1. 准备 2. 实战一下 3. 总结 大家好,我是安果! 最近在部署前端项目的时候,需要先将前端项目压缩包通过堡垒机上传到应用服务器的 /tmp 目录下,然后进入应用服务器中,使用 mv 命令将压缩文件移动到 Nginx 项目设定目录,最后使用 unzip 命令解压文件,以此完成项目的部署 仔细分析,大部分操作都是重复性的动作,人工去完成这些操作会大大降低工作效率 本篇文章将介绍如何利用 Python 监控文件夹,以此辅助完成服务的部署动作 1. 准备 这里要介绍一个 Python 依赖

  • CS1.5,cs1.6中使用包含文件夹的脚本的图文教程

    我们继续教大家如何使用含有文件夹的脚本比如你下载的是这样的脚本文件 或者 一,自动安装脚本文件 我们网站制作了一个.exe安装文件的脚本 你打开后 如图: 你点接受 出来一个安装文件,点浏缆 我这的CS放在了D:\CS1.5\CS1.5中文硬盘版 找到了CS文件后, 就可以安装了 二,含有cstrike等文件夹的脚本使用 如果不是自动安装的脚本文件,下载解压后一般的有,cstrike,logos等文件夹时候. 如图: 要把下载的cstrike等文件夹覆盖掉原来CS中的同名文件就可以 在覆盖的时候

  • Virtualbox主机和虚拟机之间文件夹共享及双向拷贝(Windows<->Windows, Windows<->Linux)

    最近学习Virtualbox的一些知识,记录下,Virtualbox下如何实现主机和虚拟机之间文件夹共享及双向拷贝 关于双向拷贝 1.设置虚拟机为"双向"共享粘贴 有的人反应只要设置双向粘贴就可以,但是我的不行,我还需要再给虚拟机安装一下增强功能.需要启动虚拟机,安装菜单项"设备"中的最后一项. 安装完增强功能,注意要重启虚拟机,双向拷贝才被启用. 关于文件夹共享 情况一: Host操作系统:Windows 7 Guest操作系统:Windows Server 1.

随机推荐