首页 > 解决方案 > 用于部署的 Python 脚本:比较两个文件夹以生成用于备份和 ftp 的增量文件

问题描述

我正在通过比较两个文件夹(dev, prodmirror)来创建一个用于部署的 python 脚本以生成增量文件,然后备份现有文件并复制到prodmirror文件夹以及 ftp 增量到服务器。

下面是代码..

问题: def difference_dict(Dict_A, Dict_B) 必须仅识别 AB ,但如果文件在 B 中更改(即 prodmirror)也返回,这里需要一些帮助/指针。

    import os
    import hashlib

    srcdir = 'C:\dev'
    tgtdir = 'C:\prodmirror'

    # definition of function to retrieve MD5 using small chunks of file
    def md5(fname):
        hash_md5 = hashlib.md5()
        with open(fname,'rb') as f:
            for chunk in iter(lambda: f.read(2 ** 20), b""):
                hash_md5.update(chunk)
        return hash_md5.hexdigest()

    # definition of function to find dictionaries difference,i.e present in A not in B
    def difference_dict(Dict_A, Dict_B):
        output_dict = {}
        for key in Dict_A.keys():
            if key not in Dict_B.keys():
                output_dict[key] = Dict_A[key]
        return output_dict

    srcdict={}
    for path, subdirs, files in os.walk(srcdir):
       for filename in files:
        f = os.path.join(path, filename)
        srcdict[md5(f)]= f

    print("SRC Dict :"+str(srcdict))

    tgtdict={}
    for path, subdirs, files in os.walk(tgtdir):
       for filename in files:
        f = os.path.join(path, filename)
        tgtdict[md5(f)]= f
    print("TGT Dict :"+str(tgtdict))


    print("DIFF Dict :"+str(difference_dict(srcdict,tgtdict)))

标签: pythonpython-3.xpython-2.7continuous-integration

解决方案


最后,在尝试了一些脚本和网络延迟来解决同步问题之后,我们解决的最好的免费选项是免费工具 .. winscp,这里是文档的方法 --> https://winscp.net/eng/docs/task_synchronize_full

我发现能够以二进制模式和自动监视功能在安全协议中同步的优势(我们不使用但很好)第一个副本,本地服务器文件夹复制并启动同步(2 种可用模式,自动/手动)

因此,无论您做什么更改,工具都会与服务器副本进行比较并仅移动更改的文件!

env 我们将 windows 工作到 linux。


推荐阅读