Бэкап своими руками
"Люди делятся на две категории: те, кто уже терял свои данные
в результате отсутствия бэкапа, и те, кто пока не терял."
Периодически в моей френдленте появляются посты на тему: "как я организую информацию". Я решил тоже внести свою лепту.
До тех пор, пока у меня был один-единственный компьютер, вопрос бэкапа не стоял в принципе: слил на флешку раз в неделю содержимое домашнего каталога, и этого достаточно. Ситуация кардинально изменилась, когда это стало выглядеть вот так:
1. Появился домашний сервер с функцией файлсервера для нескольких пользователей.
2. Несколько ноутбуков.
3. Телефон.
4. Два сервера баз данных.
5. Несколько виртуальных машин.
В данной ситуации решение "копируем раз в неделю на флешку" уже не работало: такой зоопарк надо содержать в порядке, иначе очень легко запутаться. Перед тем, как изобретать велосипед, я огляделся вокруг на предмет того, существуют ли готовые решения для подобного рода проблем. Чего-то бесплатного и легкодоступного я не нашел, и пришлось писать самому.
Поначалу я думал выложить здесь скрипты и устроить разбор, но потом понял, что это мало кому интересно, поэтому расскажу об общих принципах процесса бэкапа.
Существует компьютер, отвечающий за централизованный бекап данных, это мой домашний сервер.
Бэкап производится в несколько шагов:
I. Бэкап сервера.
1. Каждый вечер в определенное время сервер монтирует два внешних диска, делая их доступными на чтение-запись.
2. После того, как монтирование произошло успешно, проверяется структура каталогов бэкапа на этих внешних дисках. Если вдруг выясняется, что структуры каталогов не существует/повреждена, то она создается/восстанавливается. Зачем это сделано: можно прикупить новый диск большей емкости, подключить к серверу и все будет работать точно так же.
3. Дальше запускаются несколько скриптов бэкапа, каждый из которых осуществляет бэкап своей порции данных, а именно:
а) бэкап всех файлов и подкаталогов домашнего каталога, кроме определенных (кэш браузера, tmp-каталог, soft-ссылки на каталоги на других компьютерах, трэш-корзина...). Необходимо заметить, что копируются только измененные данные, а не все. Это правило действует для всех бэкапов, за исключением пункта "в".
б) бэкап аудио- и фильмотеки, и всех фотографий. Это добро живет на отдельном жестком диске сервера и копируется на второй внешний диск. Так сделано для того, чтобы можно было в любой момент отстыковать этот второй диск и уехать в командировку. Этот диск зашифрован.
в) бэкап базы данных сервера. В отличие от обычных бэкапов каждый день бэкап производится в новый подкаталог вида dd.mm.yy. Каждый день удаляются подкаталог 10-ти дневной давности, если новый бэкап БД прошел успешно.
г) Бэкапятся все конфирурационные файлы сервера, бэкапится лист установленного ПО.
4. По окончанию всего бэкапа внешние диски демонтируются, а если активна определенная конфигурация, то сервер автоматически выключается на ночь.
II. Бэкап ноутбука производится следующим образом:
1. Ноутбук определяет, подключен он к домашней сети или нет, и если подключен, то кабелем или по WiFi. Если он подключен кабелем, то через минуту после того, как сервер смонтировал бэкап-диски (на всех компьютерах за точность времени отвечает ntp-daemon) ноутбук монтирует бэкап-диски сервера и запускает у себя следующие процессы:
а) Запускается скрипт, выключающий на время почтовый клиент и отключающий программулину, работающую с личным архивом.
б) Бэкапится домашний каталог по тому же принципу, что и домашний каталог на сервере.
в) Аналогичный процесс происходит с базой данных.
г) Особо важная информация шифруется и бэкапится на удаленный компьютер, находящийся за пределами дома.
III. Бэкап телефона.
Я поначалу сделал бэкап телефона тоже по таймеру вечером, но потом заметил, что совершенно непредсказуемо, когда именно я воткну телефон в какой-нибудь компьютер. Поэтому теперь это работает так: скрипт (как на сервере, так и на ноутбуке) проверяет, делался ли сегодня бэкап телефона или нет. Если не делался, и телефон виден компьютеру, то немедленно стартует бэкап телефона на подключенный компьютер (сервер или ноутбук). Т.к. данных там мало, то процесс происходит очень быстро.
Кроме того, на телефон сбрасываются с сервера (если он доступен) все новые книги и музыка, которых еще нет в телефоне, а так же удаляются уже прочитанные книги.
За сам процесс бэкапа отвечает утилита rsync, запускаемая с различными ключами. Для каждого компьютера, участвующего вот прямо сейчас в процессе бэкапа, на время этого самого бэкапа запрещается процесс отключения компьютера.
Собственно, и все. У кого есть вопросы - спрашивайте, так же буду рад разумным идеям.
- cynic's blog
- Login to post comments