Fedora блог
Блог посвященный моей деятельности в Федоре и вокруг неё.


Наконец-то httpd-itk в Федорке PDF Печать E-mail
Автор: Павел Алексеев aka Pahan-Hubbitus   
16.03.2012 21:35
Наконец-то свершилось, не прошло и двух лет: https://admin.fedoraproject.org/updates/FEDORA-2012-3388/httpd-itk-2.2.22-5.fc17
 
Исправление порушившегося Subversion репозитория PDF Печать E-mail
Автор: Павел Алексеев aka Pahan-Hubbitus   
15.04.2011 10:54

Эта статья совсем не о пользе бакапов, о их неоюбходимости писать в N+1 раз писать уже просто нету смысла. Как гласит пословица: Нету админов которым бакапы не нужны, есть только те которые еще их не делают.

Так вот, и были они. Но так получилось, что репозитории Subversion туда не попали. Ну просто потому что были симлинокм на внешний раздел и были забыты... Вот такая моя халатность, за что и поплатился.

Однако, как я уже сказал, сия печальная история с относительно счастливым концом совсем не про бакапы. А скорее про счастливый конец. Итак, как Вы уже поняли, порушился у меня раздел, достаточно серьезно порушился. Многое конечно повосстановилось, кое-что нет. Особо серьёзного там ничего не было, многие фильмы просто и без сожаления были удалены. Но вот случилось что там же оказались и SVN репозитории. И вот тут-то началось очень неприятно. Стандартный svnadmin verify говорит о проблеме, но вот восстановить что-либо с помощью svnadmin recovery оказалось совершенно не возможно. Почитал я множество статей в интернете про восстановление, и понял что все они пытаются все же воссоздать файлы ревизий, посмотрел на свои, где целые килобайты нулей, и понял что это безнадёжно. Оставалось одно - восстановить то что сохранилось. В некоторых было потеряно всего по 1-3 ревизии что совершенно не является страшным. И восстанавливал просто:

  1. Делал новый репозиторий (svnadmin create)
  2. Из старого делал svnadmin dump (с ключом --incremental для всех кроме нулевого прохода)
  3. Смотрел ревизию на которой произошла ошибка, делал дамп до нее (не включая битую)
  4. Повторял так шаги 2-3 для всех корректных ревизий.

В итоге получал новый репозиторий, с меньшим количеством ревизий, но полностью рабочий. Когда была рабочая копия его, так еще и коммитил последнее состояние. Ну конечно требовался полный речекаут (checkout), поскольку номера ревизий изменились.

Все бы хорошо, но дошёл я до одного, который посыпался весьма серьёзно. Коммитов там было около 600. Битые ревизии были иногда последовательны, иногда через одну. Но и это оказалось не самым главным. До сих пор я делал все руками - сохранял в нумерованные дампы, и загружал в новый... Добило меня следующее неприятное обстоя