FreeBSD Резервное копирование системы
Поговорим о создании резервной копии нашей системы на FreeBSD тобишь бэкапа.
Представьте ситуацию, вы хорошо потрудились настроили рабочий сервер под ваши задачи, который хорошо и стабильно работает, выполняя свои функции, но в один прекрасный момент жесткий диск на котором стоит ваша настроенная FreeBSD выходит из строя. Или же вы просто хотите перенести FreeBSD на другой жесткий диск например большего размера.
Итак, ближе к делу
В этой статье я приведу один из множества вариантов организации бэкапа сервера на FreeBSD. Полностью: от создания, до восстановления.
Создание бэкапа FreeBSD
Для создания резервной копии нашей системы воспользуемся утилитой dump.
Важное замечание, необходимо чтобы в сервере помимо жесткого диска с системой был вставлен другой физический жесткий диск с примонтированной папкой, куда мы и будем делать бэкап. (Далее в примере это папка BACKUPDUMP)
Создадим файл со скриптом на shell в папке /usr/local/etc, который будет делать наш бэкап. И назовем его script_backup.sh
#!/bin/sh # Создаем файл info.txt в котором будет храниться дата создания бэкапа date > /BACKUPDUMP/info.txt # и состояние разделов на момент создания. df -h >> /BACKUPDUMP/info.txt # Записываем каждый раздел в отдельный файл бэкапа dump -0 -L -f - /var > /BACKUPDUMP/var.img dump -0 -L -f - /usr > /BACKUPDUMP/usr.img dump -0 -L -f - / > /BACKUPDUMP/root.img |
Разберем утилиту dump
-0 — делается полный бэкап раздела
-L — дамп снимается с «живой» файловой системы. В корне раздела создается директория .snap куда и делается снимок текущего состояния файловой системы, с помощью которого снимается дамп.
-f — Писать дамп в файл
Не забываем дать скрипту права на выполнение.
chmod 755 script_backup.sh |
И положим его в cron, добавив такую строчку
0 5 10,20,30 * * root /usr/local/etc/script_backup.sh |
В 5 утра примерно каждые 10 дней наш скрипт будет выполняться, обновляя файл info.txt и перезаписывая в файлы бэкапы разделов.
Восстановление из бэкапа
Не менее важная часть, которую стоит отработать, прежде чем придется столкнуться с ней в реальности.
Для успешного восстановления воспользуемся Frenzy — это Live-CD на базе ОС FreeBSD.
Скачиваем ее здесь и записываем образ на диск или флешку.
Грузимся с диска или с флешки и начинаем восстановление:
Если у вас свежий жесткий диск, то соответственно создаем вначале на нем разделы, если вы новичок, то как вариант для вас подойдет способ загрузиться с установочного диска FreeBSD и пройти весь процесс установки чистой системы, в процессе которого на жестком диске создадутся необходимые разделы.
(ВАЖНО: не удалите случайно данные на жестком диске с файлами бэкапа, лучше на всякий случай на время установки отсоедините его)
Если же вы просто хотите вернуть систему к предыдущему состоянию, то соответственно разделы все уже на месте, поэтому просто восстанавливаем систему из бэкапа:
Итак, мы уже имеем разделы на жестком диске и загрузили Frenzy
По умолчанию он уже примонтировал все разделы (команда «df -h» покажет вам все разделы ), поэтому делаем так:
Здесь приведен пример восстановления раздела usr, имена разделов будут отличаться от ваших.
Размонтируем раздел
umount /mnt/ad8s1d.ufs |
Отформатируем его
newfs /dev/ad8s1d |
Примонтируем обратно
mount /dev/ad8s1d /mnt/ad8s1d.ufs |
Зайдем в него
cd /mnt/ad8s1d.ufs |
И собственно восстановим данные из файла бэкапа
restore -r -f /mnt/ad6s2d.ufs/usr.img |
Всю процедуру проделываем для каждого раздела. Будьте внимательны названия разделов у вас могут иметь совершенно другие названия. Можно ориентироваться по размеру.
После проделанных действий перезагружаемся с уже восстановленного жесткого диска с системой.
Добрый вечер.
Попробовал по вашим методом реализовать бэкап, но не могу понять — по какой-то причине не пишутся файлы img. Основной диск состоит в gmirror. Также хочу делать еще бэкап с зеркального массива. Такой вариант же возможен?
Спасибо.