python - 用于部署的 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)))
解决方案
最后,在尝试了一些脚本和网络延迟来解决同步问题之后,我们解决的最好的免费选项是免费工具 .. winscp,这里是文档的方法 --> https://winscp.net/eng/docs/task_synchronize_full
我发现能够以二进制模式和自动监视功能在安全协议中同步的优势(我们不使用但很好)第一个副本,本地服务器文件夹复制并启动同步(2 种可用模式,自动/手动)
因此,无论您做什么更改,工具都会与服务器副本进行比较并仅移动更改的文件!
env 我们将 windows 工作到 linux。
推荐阅读
- android - 几秒钟后Android推送消失
- android - 如何在android中实现端口转发
- sql-server - 按列值对 SQL Server 表进行分区
- python - 对字典中的子列表进行排序的最快方法?
- reactjs - Kubernetes 不等待 reactjs 加载
- python - 如何计算python中日期的滚动窗口期?
- object-detection - 可旋转边界框
- django - 插入新记录时如何向用户发送短信
- ios - Xcode 在导入 gradle 插件生成的 cocoapods 时显示 swift 编译器错误
- android - Google Play 控制台给出错误。“Произошлаошибка。Повторите попытку позже。”