Периодическое создание дампа системы позволяет при необходимости восстанавливать файлы или всю систему целиком в состояние на момент создания дампа. Рассмотрим процесс создания дампа системы и работы с ним штатными утилитами dump и restore. Данными утилитами можно воспользоваться только, если система установлена на файловую систему UFS2.
Создание полного дампа системы
Обычно файлы дампов сохраняют на отдельном «жестком» диске или USB-накопителе. Допустим имеется постоянно подключенный USB-накопитель с файловой системой UFS2, который система определяет как da0s1d. Тогда для создания дампа системы можно воспользоваться скриптом:
#!/bin/sh
dump_disk="/dev/da0s1d"
dump_dir="/backup"
dump_count="5"
dump_count="$((dump_count+=1))"
mkdir -p ${dump_dir}
mount ${dump_disk} ${dump_dir}
if [ $? == 0 ]
then
dump -0Lf - / | 7zz a -si -mx=9 ${dump_dir}/dump_`date +'%Y%m%d_%H%M%S'`.7z >/dev/null
ls -1t ${dump_dir}/dump_* | tail -n+${dump_count} | xargs rm -f
umount ${dump_dir}
fi
В данном скрипте
dump_disk – это накопитель, на который будет сохраняться дамп;
dump_dir – это точка монтирования накопителя, на который будет сохраняться дамп;
dump_count – это максимальное количество дампов для хранения (более старые дампы будут автоматически удаляться).
Если запустить скрипт в терминале под пользователем root (Администратор), не забыв сделать скрипт исполняемым, то в результате будет сохранён полный дамп системы в максимально сжатом при помощи архиватора 7z виде. Имя файла дампа будет включать в себя дату и время его создания.
Вызов данного скрипта можно делать из планировщика заданий cron. Допустим скрипт сохранён как /root/sys_dump.sh. Тогда для создания дампа один раз в неделю в 2:00 ночи с пятницы на субботу достаточно добавить в файл /etc/crontab строку:
0 2 * * 6 root /root/sys_dump.sh
Восстановление некоторых файлов и каталогов
Если известно какой именно файл или каталог необходимо восстановить, то в терминале под пользователем root (Администратор) достаточно выполнить команду:
7zz x -so /backup/dump_file_name.7z | restore -xf - ./file_with_full_path
где
/backup/dump_file_name.7z – сжатый файл дампа,
./file_with_full_path – извлекаемый из дампа файл или каталог (точка и слэш в начале обязательны).
Если точно неизвестно где именно внутри дампа находится нужный файл или каталог, то можно извлечь файлы в интерактивном режиме:
7zz x -so /backup/dump_file_name.7z | restore -if -
В интерактивном режиме можно перемещаться по каталогам с помощью команды cd, просматривать содержимое каталога с помощью команды ls, добавлять файлы и каталоги в список для извлечения с помощью команды add, и наконец, извлечь файлы по созданному списку с помощью команды extract. Подробнее о командах интерактивного режима можно узнать в man restore.
Будьте внимательны: извлекаемые из дампа файлы и каталоги будут сохраняться в текущем каталоге. Поэтому лучше сначала создать временный каталог и перейти в него:
mkdir /tmp/restore
cd /tmp/restore
Полное восстановление системы
Полное восстановление системы может потребоваться в случае внезапного выхода из строя системного «жесткого» диска. После установки нового «жесткого» диска необходимо загрузиться с установочного DVD или USB диска. При этом также необходимо подключить носитель с ранее созданным дампом системы. В меню установщика необходимо выбрать «Выход в командную строку». В командной строке необходимо выполнить команды (предполагается, что носитель с дампом определяется в системе как da0s1d):
mkdir -p /var/dump
mount /dev/da0s1d /var/dump
exit
Далее в установщике необходимо выбрать пункт меню «Установка новой системы» и следовать инструкциям установщика. В окне ввода пути к файлам дистрибутивов указать /var/dump. Файл дистрибутива обязательно должен быть создан как описано выше и иметь расширение .7z. Чтобы не изменились настройки сетевых интерфейсов, диалог настройки сетевого интерфейса, получающего адрес по DHCP, необходимо пропустить.