Skip navigation.
Home

Бэкап своими руками


"Люди делятся на две категории: те, кто уже терял свои данные
в результате отсутствия бэкапа, и те, кто пока не терял."

Периодически в моей френдленте появляются посты на тему: "как я организую информацию". Я решил тоже внести свою лепту.

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

1. Появился домашний сервер с функцией файлсервера для нескольких пользователей.
2. Несколько ноутбуков.
3. Телефон.
4. Два сервера баз данных.
5. Несколько виртуальных машин.

В данной ситуации решение "копируем раз в неделю на флешку" уже не работало: такой зоопарк надо содержать в порядке, иначе очень легко запутаться. Перед тем, как изобретать велосипед, я огляделся вокруг на предмет того, существуют ли готовые решения для подобного рода проблем. Чего-то бесплатного и легкодоступного я не нашел, и пришлось писать самому.

Поначалу я думал выложить здесь скрипты и устроить разбор, но потом понял, что это мало кому интересно, поэтому расскажу об общих принципах процесса бэкапа.

Существует компьютер, отвечающий за централизованный бекап данных, это мой домашний сервер.

Бэкап производится в несколько шагов:

I. Бэкап сервера.

1. Каждый вечер в определенное время сервер монтирует два внешних диска, делая их доступными на чтение-запись.
2. После того, как монтирование произошло успешно, проверяется структура каталогов бэкапа на этих внешних дисках. Если вдруг выясняется, что структуры каталогов не существует/повреждена, то она создается/восстанавливается. Зачем это сделано: можно прикупить новый диск большей емкости, подключить к серверу и все будет работать точно так же.
3. Дальше запускаются несколько скриптов бэкапа, каждый из которых осуществляет бэкап своей порции данных, а именно:

а) бэкап всех файлов и подкаталогов домашнего каталога, кроме определенных (кэш браузера, tmp-каталог, soft-ссылки на каталоги на других компьютерах, трэш-корзина...). Необходимо заметить, что копируются только измененные данные, а не все. Это правило действует для всех бэкапов, за исключением пункта "в".
б) бэкап аудио- и фильмотеки, и всех фотографий. Это добро живет на отдельном жестком диске сервера и копируется на второй внешний диск. Так сделано для того, чтобы можно было в любой момент отстыковать этот второй диск и уехать в командировку. Этот диск зашифрован.
в) бэкап базы данных сервера. В отличие от обычных бэкапов каждый день бэкап производится в новый подкаталог вида dd.mm.yy. Каждый день удаляются подкаталог 10-ти дневной давности, если новый бэкап БД прошел успешно.
г) Бэкапятся все конфирурационные файлы сервера, бэкапится лист установленного ПО.

4. По окончанию всего бэкапа внешние диски демонтируются, а если активна определенная конфигурация, то сервер автоматически выключается на ночь.

II. Бэкап ноутбука производится следующим образом:

1. Ноутбук определяет, подключен он к домашней сети или нет, и если подключен, то кабелем или по WiFi. Если он подключен кабелем, то через минуту после того, как сервер смонтировал бэкап-диски (на всех компьютерах за точность времени отвечает ntp-daemon) ноутбук монтирует бэкап-диски сервера и запускает у себя следующие процессы:

а) Запускается скрипт, выключающий на время почтовый клиент и отключающий программулину, работающую с личным архивом.
б) Бэкапится домашний каталог по тому же принципу, что и домашний каталог на сервере.
в) Аналогичный процесс происходит с базой данных.
г) Особо важная информация шифруется и бэкапится на удаленный компьютер, находящийся за пределами дома.

III. Бэкап телефона.

Я поначалу сделал бэкап телефона тоже по таймеру вечером, но потом заметил, что совершенно непредсказуемо, когда именно я воткну телефон в какой-нибудь компьютер. Поэтому теперь это работает так: скрипт (как на сервере, так и на ноутбуке) проверяет, делался ли сегодня бэкап телефона или нет. Если не делался, и телефон виден компьютеру, то немедленно стартует бэкап телефона на подключенный компьютер (сервер или ноутбук). Т.к. данных там мало, то процесс происходит очень быстро.

Кроме того, на телефон сбрасываются с сервера (если он доступен) все новые книги и музыка, которых еще нет в телефоне, а так же удаляются уже прочитанные книги.

За сам процесс бэкапа отвечает утилита rsync, запускаемая с различными ключами. Для каждого компьютера, участвующего вот прямо сейчас в процессе бэкапа, на время этого самого бэкапа запрещается процесс отключения компьютера.

Собственно, и все. У кого есть вопросы - спрашивайте, так же буду рад разумным идеям.