记录目录结构变更/迁移

记录目录结构变更/迁移

想象一下一个大型 SAN,其中有十万个文件处于无组织的目录结构中。

文件将被移动到具有有序目录结构的新 SAN。一些文件在移动时将被重命名。此外,许多文件都有引用,例如 Excel 电子表格是相互链接的,移动后这些引用将会中断。

我们需要保存一个“源文件”和“目标文件”路径的映射,以防我们需要参考档案,例如修复损坏的链接。

我研究了一下市场上是否有这样的产品,但一无所获。因此我开始编写一个应用程序,允许用户将文件和记录拖放到 SQL dB 中:

在此处输入图片描述

我对这种方法不是 100% 确定。有人知道是否有更好的方法吗?Windows 中有什么东西吗?

  1. 我们原本想扫描新旧目录,然后以此方式绘制地图。但不幸的是,这种方法行不通,因为文件名可能会改变,而且移动文件的创建/修改日期等都是今天。

  2. 我们正在考虑在每个文件中设置一些唯一的标识符,但这个想法从未得到实施,因为您会将不同文件类型的唯一标识符存储在哪里呢?

  3. 可能是 AutoHotKey 脚本?

答案1

我为我的一个客户用 C# 构建了一个自动化部署系统。这个问题看起来很类似,只是规模不同。

ADS 中处理的事项:

  1. 从 SVN 自动检出。
  2. 遍历所有文件夹。
  3. 每个文件夹都可以被纳入或排除在外。
  4. 如果包含文件夹,则所有文件和子文件夹也将被包含。排除也是如此。
  5. 就像包含一样,每个文件夹都可以重新定位到部署文件夹中的新位置。
  6. 一切都是拖放操作(幸运的是,部署脚本不需要经常修改)。
  7. 最关键的部分是二进制文件比较,以便仅复制已修改的文件。<-- 这看起来对你来说也是最重要的事情。由于我只处理 C# 或 perl 代码文件等代码文件,因此这是一个简单的检查:
    1. 拿取左右两边的文件
    2. 删除所有空格。
    3. 一次比较一个字节的文件。

就您而言,除非文件非常大,否则您可以使用相同的方法。如果文件非常大(假设这些是数据文件),简单的页眉/页脚比较就可以了。

我们正在考虑在每个文件中设置一些唯一的标识符,但这个想法从未得到实施,因为您会将不同文件类型的唯一标识符存储在哪里呢?

这也是我开始使用的方法,但我的问题没有那么严重,所以我放弃了。从技术上讲,每个 FileInfo 对象都包装在一个专门的类中,该类具有 GUID 类型的特定字段。我将这个序列化类数组保存在 XML 文件中。

<FIItem>
    <ID>*some guid*</ID>
    <FileInfoObj>*file info which contains full file path*</FileInfoObj>
</FIItem>

相关内容