Старая грустная шутка делит пользователей на тех, кто резервные копии еще не делает и тех, кто уже делает. Даже если вы сам себе администратор, то цените свое время и деньги, делайте резервные копии! Это не так сложно, как многие думают. Ваша система FreeBSD уже готова делать резервные копии ваших данных. Я рассмотрю самый простой вариант, который позволит сберечь вам ваши данные, нервы и деньги (восстановление данных порой стоит очень дорого) в случае каких-либо сбоев в системе.

 

 

 

Моя дисковая система выглядит так

hotfreebsd# df -h
Filesystem            Size    Used   Avail Capacity  Mounted on
/dev/mirror/gm0s1a    1.9G    589M    1.2G    32%    /
devfs                 1.0K    1.0K      0B   100%    /dev
/dev/mirror/gm0s1d     19G    1.5G     16G     9%    /cache
/dev/mirror/gm0s1h     26G    786M     23G     3%    /home
/dev/mirror/gm0s1g    4.8G     20K    4.5G     0%    /tmp
/dev/mirror/gm0s1e     29G    1.3G     25G     5%    /usr
/dev/mirror/gm0s1f     58G    967M     53G     2%    /var
devfs                 1.0K    1.0K      0B   100%    /var/named/dev

Собран RAID1 при помощи gmirror. У вас картина может быть другой, например что-то вроде

hotfreebsd# df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/da0s1a    989M    183M    728M    20%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/da0s1d     12G    8.2G    2.5G    76%    /cache
/dev/da0s1f    989M     26K    910M     0%    /tmp
/dev/da0s1g     13G    4.5G    7.3G    38%    /usr
/dev/da0s1e    4.8G    976M    3.5G    21%    /var
devfs          1.0K    1.0K      0B   100%    /var/named/dev

Это другая машина, где просто 1 SCSI HDD. Для SATA/PATA диск прсото будет не
/dev/da0s1a
а
/dev/ad0s1a

В создании резервных копий нам поможет старая, но вполне рабочая утилита dump.

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

Для простоты я создал папку на этом же диске

mkdir /home/backup/

в неё и буду складывать резервные копии, там они всеравно не задержатся и будут перемещены. В общем не будем усложнять пример. С полученой резервной копией вы сможете сделать что хотите – утащить на другой комп, записать на внешний HDD или записать DVD диск.

По моему первому варианту (с массивом gmirror)

Я написал простенький скриптик

#!/bin/sh
# резервное копирование основных разделов за исключением home
echo 'Начал копирование корневого раздела'
DATE=`date +%Y.%m.%d`
 echo 'Начато копирование корневого раздела'
dump -0 -L -f - / | gzip -9  >  /home/backup/root.${DATE}.img.gz
 echo 'Корневой раздел скопирован, жду 4 секунды'
sleep 4
dump -0 -L -f - /usr | gzip -9  >  /home/backup/usr.${DATE}.img.gz
 echo 'Раздел usr скопирован, жду 4 секунды'
sleep 4
dump -0 -L -f - /var | gzip -9  >  /home/backup/var.${DATE}.img.gz
 echo 'Раздел var скопирован. Все задачи резервного копирования выполнены.'

поместил это в отдельный файлик
/root/backup.sh

даю права на выполнение

chmod 700 /root/backup.sh

и просто его запускаю (в системе как root)
hotfreebsd# ~/backup.sh

и жду пока все скопируется.

Можно запустить и руками.

Например строка в скрипте

dump -0 -L -f - /usr | gzip -9  >  /home/backup/usr.${DATE}.img.gz

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

dump -0 -L -f - /usr | gzip -9  >  /home/backup/usr.`date +%Y.%m.%d`.img.gz

запускает утилиту dump для раздела /usr с полным копирование данных (-)
-L говорит о том, что это “живая файловая система” т.е. она смонтирована в режиме запись/чтение
-f запись копии в файл (по умолчанию dump пишет данные на стример – это такой накопитель внешний для резервных копий, нам нужно в файл, поэтому опцию нужно указать)

Затем мы передаем результат работы dump на вход утилите сжатия gzip с параметром сжатия -9 (максимальное сжатие) и потом идет сама запись в файл по пути /home/backup/usr.${DATE}.img.gz
Переменная ${DATE} превратится в текущую дату. Сжатие наверное у меня чрезмерное, но компьютер достаточно мощный, и я не спешу, если не хотите сжимать резервную копию, то можете сразу в файл писать или поставьте степень сжатия поменьше, например gzip -2.

Для второго варианта (без массива gmirror)

Подойдет что-то вроде

hotfreebsd# dump -0 -L -f - /dev/da0s1a > /home/backup/root.`date +%Y.%m.%d`.img

В этом примере я не сжимаю резервную копию, соответственно и расширение у конечного файла просто img

Восстановить данные можно при помощи другой программы – restore

В случае, если у вас применялось gzip сжатие образа при создании, то работает конструкция вроде

Внимание! Опасная команда!

hotfreebsd# gzip -d  /home/backup/root.2009.05.06.img.gz  | ( cd / ; restore -rf - )

Что происходит при запуске этой команды
- мы запускаем gzip с параметром -d (это значить распаковать архив)
- мы указываем файл, который содержит резервную копию
- переходим в раздел, в который нужно восстановить нашу копию (в этом примере восстанавливаем корневой раздел)

или вот так для восстановления /usr

gzip -d  /home/backup/usr.2009.05.06.img.gz  | ( cd /usr ; restore -rf - )

Если даные не сжаты, то делаем так (восстановление /usr)

cat /home/backup/usr.2009.05.06.img.gz  | ( cd /usr ; restore -rf - )

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