`

更新服务器文件到本地

阅读更多
#!/usr/bin/python
#-*- coding: utf-8 -*-
#\magent\src\restservice\synchcofig.py
'''
    用于同步服务器的配置文件
'''
import urllib2
#import tools
import logging,logging.config
import os
import json
import hashlib
import thread
import time
import urllib
from time import sleep
import threading

FILE=os.getcwd()

LOG_NAME='syncSysConfigFile'

logging.basicConfig(level=logging.DEBUG,
                    format='%(asctime)s:%(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
                    datefmt='%a, %d %b %Y %H:%M:%S',
                    filename = os.path.join(FILE,'log.txt'),
                    filemode='w'
    )
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')
console.setFormatter(formatter)
logging.getLogger(LOG_NAME).addHandler(console)

log = logging.getLogger(LOG_NAME)

SERVICE_IP='132.121.130.18:8008'
threads=[]
index=1

#生成本地的MD5文件,用于比对服务器上的MD5文件
def sendRequest():
    threads=[]
    index=1
    log.info('send request to service............')
    url = 'http://'+SERVICE_IP+'/checkFile/'
    jsonStr = urllib2.urlopen(url).read()
    jsoObj = json.loads(jsonStr)
    state = jsoObj['state']
    if state=='200':
        dataList = jsoObj['data']
        if dataList is not None:
            for data in dataList:
                #time.sleep(1)
                #log.info(data)
                js = json.loads(data)
                filename= js['filename']
                servicepath= js['servicepath']
                clientpath= js['clientpath']
                md5=js['md5']
                downLoadFile(servicepath,clientpath,md5)
           
        else:
            log.info('no find the sync file,please check the magent_config table..................')
    else:
        log.info(jsoObj['message'])

'''
    根据MD5值进行判断,如果不一致,则从新从服务器上下载文件
'''
def downLoadFile(servicepath,clientpath,md5):
    down = False
    if os.path.exists(clientpath):
        #如果存在,则判断md5值是否一致
        newMD5 = MD5(clientpath)
        if newMD5 == md5:
            pass
        else:
            down = True
       
    else:
        dirname=os.path.dirname(clientpath)
        if os.path.exists(dirname):
            pass
        else:
            os.makedirs(dirname)
        down = True
       
    #启用线程进行下载
    if down:
        """global index
        index = index + 1"""
        t = threading.Thread(target=mulitThreadStart,args=(servicepath,clientpath,1))
        t.start()
        threads.append(t)
    for i in threads:
        t.join()   
       
#采用多线程进行下载
def mulitThreadStart(servicepath,clientpath,index):
    time.sleep(index)
    log.info(time.strftime('%Y-%m-%d %H:%M:%S') + '    ' +servicepath + '---->' +clientpath)
    url = 'http://'+SERVICE_IP+'/downloadFile2/?downpath=' +servicepath
    urllib.urlretrieve(url,clientpath)
   

#获取文件的md5值
def MD5(filepath):
    with open(filepath,'rb') as f:
        md5obj = hashlib.md5()
        md5obj.update(f.read())
        hash = md5obj.hexdigest()
        return hash


if __name__ == '__main__':
    log.info(time.strftime('%Y-%m-%d %H:%M:%S') +'   begin to synchronou service file.............')
    sendRequest()
    log.info(time.strftime('%Y-%m-%d %H:%M:%S') +'   synchronou service file end.............')
  
   

                                         ---2016-05-24
                           @dianxinguangchang.zhongshanerlu.yuexiuqu.guangzhoushi.guangdongsheng
分享到:
评论

相关推荐

    linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器的方法

    如下所示: ...以上这篇linux采用scp命令拷贝文件到本地,拷贝本地文件到远程服务器的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文

    下载服务器文件到本地,并删除已下载的服务器文件

    在IT行业中,下载服务器文件到本地以及在下载后删除服务器上的源文件是一项常见的操作,尤其在数据迁移、备份或更新场景下。以下是一些相关的知识点: 1. **FTP(File Transfer Protocol)**:FTP是最传统的文件...

    shell脚本实现本地文件与服务器文件同步

    ### Shell脚本实现本地文件与服务器文件同步 #### 背景与意义 在软件开发过程中,经常需要将本地开发环境中的文件同步到服务器上进行部署或测试。手动上传不仅耗时而且容易出错,因此编写一个自动化脚本来实现文件...

    使用JS自动从服务器端下载文件到本地

    综上所述,这篇文章可能涵盖的内容包括:使用JavaScript发起HTTP请求获取服务器文件,处理响应的`blob`数据,生成可下载的链接,以及可能提及的服务器端工具如Apache Ant和Apache Commons IO的作用。通过这些技术,...

    本地与服务器之间文件更新

    总的来说,本地与服务器之间的文件更新是通过自动更新机制实现的,它涉及到文件的检测、下载、校验、安装和刷新等多个步骤。而文件对比则优化了这一过程,仅传输必要的变化,提高了效率。了解并掌握这一技术对于保持...

    Java 实现对比ftp文件和本地文件的修改时间 更新本地文件

    Java 实现对比ftp文件和本地文件的修改时间 ftp服务器文件比本地文件新时 把服务器文件下载覆盖本地文件 更新本地文件

    VB上传本地文件到服务器

    在VB(Visual Basic)编程中,上传本地文件到服务器是一个常见的任务,特别是在开发Web应用程序时。这个过程涉及客户端(用户计算机)与服务器之间的数据交互,通常通过HTTP协议完成。以下是对这一主题的详细阐述: ...

    java上传文件到linux服务器,操作linux服务器上文件,下载linux服务器文件,删除linux服务器文件

    **下载Linux服务器文件** 下载文件的过程与上传类似,只是使用了`get()`方法。该方法会将服务器上的文件下载到本地。 ```java sftp.get(远程文件路径, 本地保存路径); ``` **删除Linux服务器文件** 删除文件可以...

    用PUTTY自动将服务器上的备份文件取到本地

    在这个场景中,我们将探讨如何使用PUTTY自动将服务器上的备份文件取到本地。 首先,理解SSH协议是关键。SSH提供了一种加密的网络通信方式,确保数据传输的安全性。PUTTY基于此协议,通过输入服务器的IP地址、端口号...

    FTP同步服务器文件和本地文件下载

    在这个场景中,我们使用VC2015(Visual C++ 2015)开发环境,通过FTP来实现服务器文件与本地文件的同步。这个过程主要包括两个核心部分:文件的检查和文件的下载。 首先,我们需要理解FTP的工作原理。FTP使用TCP...

    Finalshell windows版的 可以上传/下载 文件到服务器/本地。

    在这个Windows版本中,Finalshell提供了简单易用的界面,使得上传和下载文件到服务器或本地计算机变得异常轻松。 1. **文件传输**: - **上传文件**:Finalshell支持用户直接从本地文件系统选择文件或文件夹,通过...

    上传本地文件夹的文件到FTP服务器指定目录

    本项目聚焦于如何将本地文件夹中的文件上传到FTP服务器的特定目录,这在网站更新、数据迁移或备份场景中尤其有用。我们将探讨相关的知识点,并提供一些基础的实现方法。 1. FTP基本概念:FTP是一种基于TCP的应用层...

    本地文件管理、上传至服务器、服务器文件管理

    本篇文章将深入探讨“本地文件管理、上传至服务器、服务器文件管理”这一主题,以及如何利用FTP协议进行文件上传。 首先,本地文件管理是计算机操作的基础。在Windows、macOS或Linux等操作系统中,都有内置的文件...

    在html页面使用JavaScript实行文件上传到本地服务器并获取文件所在路径

    使用JavaScript实现文件上传到本地服务器并获取到上传后文件所在路径,是由到JavaScript,java以及html页面。这个比较好,不是在jsp上获取路径,jsp太简单了,而且过时了,所以就在html页面实现了下功能,我主要是做...

    服务器与本地文件互通教程.docx

    通过将服务器文件系统映射到本地,用户可以在本地操作系统上直接编辑和管理远程服务器上的文件,而无需频繁地通过FTP或其他文件传输协议手动上传和下载。本教程将详细解释如何实现这一功能,主要依赖于WinSSHFS工具...

    SFTP定时扫描本地文件上传到Linux服务器

    【标题】"SFTP定时扫描本地文件上传到Linux服务器"涉及的关键知识点主要集中在SFTP(Secure File Transfer Protocol)协议的使用、文件系统的监控以及自动化任务的执行。SFTP是一种安全的网络协议,用于在不同主机...

    NodeJS本地上传文件至服务器

    在Node.js环境中,将本地文件上传到服务器是一个常见的任务,主要应用于文件共享、数据备份、内容发布等场景。本文将详细讲解如何使用Node.js实现这一功能。 首先,我们需要理解Node.js的基本概念。Node.js是一个...

    python3写的简单本地文件上传服务器实例

    2、检查服务器上是否存在,不存在直接上传,存在的话,文件夹无视,文件比较大小,大小不一致则覆盖,最后检查服务器上是否存在本地没有的文件,存在则删除 3、之后增加了忽略列表,忽略文件类型 4、然后增加了重启...

    Wpf下载网络文件到本地指定路径(简单示例)

    4. **文件流操作**:为了将接收到的数据保存到本地文件,我们需要使用`FileStream`类创建一个到本地文件的流,然后使用`Stream.CopyTo()`方法将网络流的数据复制到本地文件流。 5. **进度更新与错误处理**:为了...

Global site tag (gtag.js) - Google Analytics