mov ah,09h
mov dx,offset HelloWorldMsg

int 21h

Most sinister interrupt vector in a world 

Опера о бэкапе очень большого SVN репозитория

№ 4855 В разделе "Администрирование" от February 16th, 2013,

Поставили мне недавно задачку ежедневно бэкапить наш корпоративный SVN. Когда я зашел посмотреть что там именно нужно бэкапить у меня аж челюсть отвисла… Репозиторий весил 37 гигабайт. 35 Гб одним файлом (!) + всякая мелочь.

Решено было сделать так:

  1. на стороне рабочего сервера выделить директорию для бэкапа и расчистить место размером с сам репозиторий
  2. на время бэкапа выключить SVN сервер чтобы никаких изменений не происходило во время копирования
  3. на стороне бэкапного сервера скопировать с рабочего rsync’ом всякую мелочь кроме самого большого файла strings
  4. на рабочем сервере split’ом разрезать strings на кусочки по 250 Мб и положить в отдельную директорию
  5. т.к. файлы уже все скопированы в отдельные директории, то можно включить сервер SVN
  6. на бэкапном сервере rsync’ком скопировать частички разрезаного strings (не измененные не будут копироваться)

Первый раз конечно будет скачиваться вообще весь репозиторий. Зато последующие разы только мелкие файлы и 1-4 кусочка по 250 Мб. Довольно простой метод и весьма устойчив к перебоям связи, которые у нас бывают.

Тот самый скрипт на рабочем сервере, который подготавливает файл strings к разрезанию и зеркалирует остальные файлы репозитория. Назовем его prepare_svn.sh. Он запускается не по крону, но также автоматически через ssh с бэкапного сервера (обязательно беспарольный вход с помощью ключа с бэкапного сервера на рабочий). Этот скрипт должен лежать в директории /data/backups/svn. Измените пути, когда будете применять это к своему серверу.

#!/bin/bash

BACKDIR="/data/backups/svn"

rm -rf $BACKDIR/repo_strings.split
mkdir $BACKDIR/repo_strings.split

#turn off svn. you [realy] need it!
chmod -x /usr/bin/svnserve 
sleep 120

#copy files excluding fucking big "strings"
echo "coping repo files"
rsync -vaz --exclude=db/strings /SVN/base /data/backups/svn/repo_svn_files/
#split fucking "strings"
echo "splitting megafucking strings"
split -d -a 3 -b 256000000 /SVN/base/db/strings $BACKDIR/repo_strings.split/

#fine. turn on svn
chmod +x /usr/bin/svnserve

В скрипте выше перед копированием все подчищается. Это делать нужно обязательно. Размер частей большого файла измеряется в байтах. По окончанию работы этого скрипта SVN сервер включается обратно.

А вот и сам управляющий скрипт на бэкапном сервере. Он располагается внутри директории /opt/backup_svn и запускается по крону в любимое для вас время. Скрипт сначала запустит на удаленном сервере скрипт подготовки, затем скопирует с рабочего сервера сначала мелкие файлы репозитория, а третьим шагом скопирует измененые частички файла strings.

#!/bin/bash

LOCALDIR="/opt/backup_svn"
REMOTEDIR="/data/backups/svn"

#run remote prepare script
ssh -i /root/.ssh/megakey.pem root@myserver.ru "$REMOTEDIR/prepare_svn.sh"

#rsync small files
rsync -vaz --checksum --rsh="ssh -l root -i /root/.ssh/megakey.pem" myserver.ru:$REMOTEDIR/repo_svn_files/ $LOCALDIR/repo_svn_files/

#rsync fucking big "strings"
rsync -vaz --checksum --rsh="ssh -l root -i /root/.ssh/megakey.pem" myserver.ru:$REMOTEDIR/repo_strings.split/ $LOCALDIR/repo_strings.split/

Теперь у вас есть бэкапилка для больших репозиториев.

Всего 1 комментарий »

1 комментарий »

Comment by Constantine | February 22, 2013 @ 11:14:54

Спасибо. Пригодится может быть.

Форма отправки комментария

*

Разрешенные HTML-теги:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

RSS RSS Feed только для этого поста |


Комментарии
  • 21h: нене ) без меня )
  • Серегй: Не совсем грабить)) если грабить можно и без рации, есть более благие цели, вы просто ответьте на мой вопрос,...
  • 21h: магазин грабить собрались? ) не, тут я не помощник ;)
  • Серегй: А что бы мне поймать чужую волну, что мне для этого нужно сделать? Допустим я купил данную рацию себе, мне...
  • 21h: слушать никто не запрещает. нет закона, который запрещает слушать. те, кто говорит иначе нагло врут. а если...
  • Серегй: Я хотел узнать могу ли я просто прийти с данной рацией baofeng uv-5r, допустим на объект, ну или вообще...
  • 21h: У меня есть только эти 2. По другим ничего не знаю. В интернете можно скачать инструкцию к вашей модели рации,...
  • Серегй: Добрый день! Хотелось бы задать пару вопросов по поводу раций, у Вас есть куда можно обратиться ТАТ.
  • 21h: потому, что нейросетью проще. яркость светофора меняется в зависимости от времени суток от маленькой красной...
  • Михаил: А зачем нейросеть? Почему цвет светофора определить без нейросетей?