2016-10-28 9 views
0

Каждый день я храню данные в один файл полки. Сегодня я обнаружил, что некоторые последние ключи отсутствуют. Размер dat-файла не изменяется. Файл dir и файл bak содержат все ключи, кроме некоторых последних ключей. Как я могу воссоздать эти файлы или как я могу повторно проверить свой файл данных и восстановить все сохраненные элементы?Как я могу восстановить 'dir' для shelve db

ответ

1

Я решил свою проблему с помощью шестнадцатеричного редактора и рук. Существуют простые шаги:

  1. открытый файл с шестнадцатеричным редактором.

  2. открыть наш реж файл данных

  3. находят смещение. Он должен быть равен 0. Это смещение 1. Fig 1

  4. найти блок из десяти нулей и найти смещение в начале этого блока. Это смещение 2. Fig 2

  5. смещение смещения 1 от смещения 2. В моем случае это 71768182 - 0 = 71768182. Это длина данных.

  6. Мы должны написать дир файла: '1', (0, 71768182)

    • 1 - ключ этого элемента в нашей БД.

    • 0 - смещение стартового блока данных

    • 71768182 - длина блока данных;

  7. Перейти к началу нового блока данных. Fig 3

  8. Перейти к шагу 3