как реализовать механизм резервного копирования дифференциальной части одного файла

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

когда наступает выбранное время ,делаю снепшот всего диска( AlphaVSS), монтирую снепшот и забираю с него выбранные файлы. Это позволяет мне корректно забирать открытые файлы и базы данных без остановки сервера (на пример).

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

хотелось бы реализовать это с помощью AlphaVSS или API VSS, но поиски инфы по теме не увенчались успехом.

буду рад любой подсказке или пинку в нужном направлении.

потратил на это уже кучу времени, и всё безрезультатно. Задумываюсь уже о написании некого метода, который будет создавать маску файла, что то вроде --- первый бит файла=1 ,второй бит файла =1 , 3 бит файла =0 и так далее, а потом изменившиеся файлы сверять с этой маской и записывать отдельные биты с адресами на пример в базу данных . Ну и на выходе, при восстановлении из резервного копирования, подменять биты по записанным адресам , на релевантные данные в выбранный период времени. Но что то мне подсказывает, что такая процедура займёт кучу времени ,если файл будет даже несколько сот мегабайт


Ответы (0 шт):