场景:我想开发一个应用程序。该应用程序应该能够连接到我的远程服务器并将数据下载到本地磁盘,同时下载它应该检查新文件并且只下载新文件同时创建所需的(新)文件夹.
问题:我不知道如何将服务器中的文件与本地磁盘中的文件进行比较。如何仅将服务器中的新文件下载到本地磁盘?
在想什么?:我想将本地计算机中的文件与服务器中的文件同步。我打算使用 rsync 进行同步,但我不知道如何将它与 ASP.NET 一起使用。
请让我知道我的方法是否错误或者是否有其他更好的方法来实现这一点。
首先您可以比较文件名,然后是文件大小,当全部匹配时,您可以比较文件的哈希值。
我把这种问题称为“数据掌握”问题。我整个星期都与一家财富 100 强公司同步我们的数据库,并处理了许多业务流程问题。
处理生产数据的第一条规则是不要进行用户的数据输入。他们必须负责将任何涉及生产的业务流程付诸实施。他们必须了解流程并有权访问显示哪些数据已更改的日志,否则他们无法处理问题。如果你是为他们做这件事,那么你就是在承担这些责任。他们会期望您在问题发生时解决所有问题,而您无法做到这一点,因为 IT 无法解释业务数据或其相关性。例如,我处理交货记录,但必须被告知重复的密钥表示承运人更改。
我继承了几个管理不善的场景,在这些场景中,IT 只是将“较新”的数据转储到生产中而没有任何进一步的担忧。有时我会收到垃圾数据,我必须手动从母带处理过程中排除传入记录,因为它们具有无效的负数量。我的一些现有记录比传入数据更完整,因此我必须跳过同步特定列。当一个应用程序的导入过程完全失败时,我不得不通过创建一个有效的更新脚本来结束投诉。这些是您需要提前考虑的问题,因为它们会鼓励您组织对同步过程的每个步骤的控制。
同步步骤:
在更新之前记录那里的内容
下载并比较本地与远程副本的差异;如果没有 a) 将它们都放在相同的物理位置或 b) 控制另一个系统,则无法比较两者
记录您正在更新的内容以及更新时的时间戳
保存并关闭日志
仅当 1-4 完成后,您才应将更新发布到生产环境
现在,就组织“掌握”过程而言,我称之为比较数据并生成不同之处的列表,我有更多的经验可以分享。对于一个应用程序,我必须重组(分散)表格和报告,然后才能可靠地比较两个来源。这意味着需要了解业务数据并知道它的格式正确。您不会说您是在比较 PDF、电子表格还是图像。对于数据,您必须为每个表(或工作表)编写单独的 mastering 流程,因为 mastering 流程的比较步骤可能会根据业务需求进行特殊调整。不要编写一个掌握一切的过程。让每个过程可控。
导入时,并非所有信息都以相同的方式进行比较。我们获取 PO 和交付数据,因此比较数万条记录以确定哪些数据点发生了变化,但一些发票信息只是简单地导入,没有任何未来的检查或同步。业务需求甚至可以覆盖更新并保留过时的数据。
然后可以根据需要定制每个母带处理过程的比较器模块。在比较 PDF 和电子表格等文件类型时,您需要特定的 API。我将 EPPlus 用于工作簿。当然,您无法打开的任何内容都必须进行二进制比较。
母版处理不应清理或转换数据,尤其是财务数据。这些步骤需要在母带制作之前进行,以便在母带制作开始之前发现这些问题。
我的工具在 3 个选项卡中组织数据——创建、更新和删除——每个选项卡都带有显示相关记录的 DataGridView。然后我可以记录、审查和提交更改,或者将责任交给愿意的人。
掌握工艺步骤:
(在外部清理/转换数据)
加载数据源
比较外部数据和本地数据
水合指示创建、更新和删除的数据集