Windows библиотека на С++ для создания и восстановления бэкапа диска

Цена договорная • безналичный расчёт, электронные деньги
01 сентября 2015, 13:53 • 4 отклика • 107 просмотров

Требуется разработать динамическую библиотеку на C++ под Windows, которая содержит набор функций для создания и восстановления бэкапа диска.
Также необходимо дополнительно разработать два консольных приложения (использующих функциональность этой библиотеки), реализующих основные сценарии по созданию и восстановлению бэкапа из командной строки.

Основные требования

  • Совместимость с Microsoft Windows 7/8/10 32/64bit

  • Бэкап дисков (только фактических данных) с файловой системой NTFS, FAT32 с помощью Volume Shadow Copy Service

  • Возможность сохранения дисков других форматов (HFS, EFS и т.д.) по секторам как raw диск

  • Возможность работы с MBR и GPT дисками

  • Бэкап будет производиться через наш WinPE на базе Windows 10, поэтому разделы при бэкапе будут находиться в "холодном" режиме. Т.е. не будут использоваться

  • Данные партиций в бэкапе должны быть зашифрованы с использованием Windows Crypto API

  • Возможность восстановления отдельных каталогов и файлов из бэкапа

  • Поддержка сетевых имен файлов бэкапа


Динамическая библиотека
Вся основная функциональность по работе с бэкапом должна быть именно в динамической библиотеке, а не в консольных приложениях. Предполагается, что библиотека будет в дальнейшем использоваться в другом стороннем приложении.
Основные группы функций:

  • Создание бэкапа

  • Восстановление из бэкапа

  • Получения информации о данных в файле бэкапа (информация о диске, партициях и структура каталога(ов))

Консольные приложения
Приложение Backup.exe Создает бэкап выбранного диска, сохраняет его в виде файла в указанном месте. Параметры коммандной строки:

  • Номер диска вида PHYSICALDRIVE0 (можно получить с помощью команды "Wmic Diskdrive Get DeviceID")

  • Куда записывать бэкап (локальный или сетевой путь)

Пример коммандной строки
Backup.exe –-disk=PHYSICALDRIVE0 –-destination="\\10.0.0.1\backup\backupname.bkp"
Приложение Restore.exe Полностью или частично (каталог или файлы) восстанавливает информацию из бэкапа в указанное место (диск или путь). Параметры коммандной строки:

  • Путь (в том числе сетевой) к файлу бэкапа

  • Куда восстанавливать бэкап (диск или путь)

  • При необходимости номер партиции

  • При необходимости путь к файлу

Пример коммандной строки
Restore.exe --source="\\10.0.0.1\backup\backupname.bkp" --partition=1 file=”\Users\*” --destination=”d:\”
Restore.exe –-source="\\10.0.0.1\backup\backupname.bkp" –destination=PHYSICALDRIVE1

Дополнительная информация

  • При необходимости можно использовать исходники из open-source проектов, например http://odin-win.sourceforge.net, если это упростит выполнение работы. Но если используются сторонние исходники, то их структура и качество должно быть приведено к соответствующему виду.

  • Использование дополнительных зависимостей и библиотек не приветствуется. Необходимо использовать только то, без чего реально не обойтись.

  • Будет code-review, так как далее мы планируем поддерживать данную библиотеку и приложения самостоятельно