Изменение/миграция структуры каталога записей

Изменение/миграция структуры каталога записей

Представьте себе большую сеть SAN с сотней тысяч файлов в неорганизованной структуре каталогов.

Файлы будут перемещены в новый SAN с организованной структурой каталогов. Некоторые файлы будут переименованы при перемещении. Также многие файлы имеют ссылки, например, таблицы Excel связаны между собой, и они сломаются после перемещения.

Нам необходимо сохранить карту путей к файлам «Откуда» и «Докуда» на случай, если нам понадобится обратиться к архиву, например, чтобы исправить неработающую ссылку.

Я провел исследование, чтобы узнать, есть ли что-нибудь на рынке, но безуспешно. Поэтому я начал писать приложение, которое позволяет пользователям перетаскивать файлы и записи в базу данных SQL:

введите описание изображения здесь

Я не уверен на 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>

Связанный контент