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

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

Нам нужно сохранить карту путей файлов From и To в том случае, если нам нужно вернуться к архиву, например, чтобы исправить неработающую ссылку.

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

Я не уверен на 100% в этом подходе. Кто-нибудь знает, есть ли лучший способ сделать это? Есть ли что-нибудь в Windows?

  1. Мы думали о сканировании старых и новых каталогов и создании карты таким образом. К сожалению, это не произойдет, так как имя файла может измениться, и даты создания / изменения и т.д. Будут сегодня для перемещенных файлов.

  2. Мы думали о том, чтобы иметь какой-то уникальный идентификатор в каждом файле, но эта идея никогда не получала тяги, так как где бы вы хранили уникальный идентификатор для разных типов файлов?

  3. Возможно, скрипт AutoHotKey?

1 ответ1

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>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .