Сохранение и восстановление в Ubuntu

Как заметил пытливый читатель моего блога, эта статья первая в новом разделе. Я решил открыть его что бы систематизировать те знания которые я нахожу о Ubuntu. В первую очередь это делаю конечно для себя. Поскольку в очередной раз «грохнув» систему и загрузившись с Live CD не всегда сразу вспомнишь нужные команды/действия/программы. Но если информация поможете кому то из вас и/или у вас есть что добавить, то я только счастлив буду.
Долго думал с какой темы начать. Хотел рассказать про установку Ubuntu или написать про какие то основы Linux вообще. Но решил начать с актуальной для себя темы.

Тема восстановления данных для меня была актуальна долгое время. Все дело в том что по привычке которая у меня осталась от Windows, я долго искал некий «программный комплекс» типа Acronis, в который входило бы 5-6 самостоятельных продукта + LiveCD. Но ничего подобного под Ubuntu нету.

А то что есть, это набор графических оболочек типа Back In Time. Сами по себе это неплохие продукты. Но их функционал ограничен, мягко говоря «не богатой фантазией» авторов. Да и назвать эти утилиты «продуктом» нельзя, поскольку сами по себе они ничего делать не умеют. Они просто запускают по клику мышкой команды операционной системы ( в линуксе много программ которые на самом деле ничего сами не делают, это называется «GUI» :-) ).

Сильно расстраивали советы «профессионалов» с тематических топиков форума http://forum.ubuntu.ru/ . Складывалось впечатление что за двадцатилетний путь, никто так и не смог создать чего то удобного для восстановления Linux. «Профессионалы» backup`а как один предлагали пользоваться Acronis или простенькими GUI оболочками.

Когда у меня появилось свободное время, я решил изучить вопрос более фундаментально. Поскольку ситуация начала напоминать мне заговор молчания. Отсутствие того, что не может отсутствовать по определению, меня раздражало.

Исследование я начал с постановки перед собой вопросов «А какие данные мне нужны в бекапе? Как и где их хранит Linux? Какие проблемы необходимо решить для того что бы безболезненно ( и удобно) сохранять и восстанавливать систему?»

И так, начинаем:

А какие данные мне нужны в бекапе?

Ну тут вроде все просто. Мне нужны мои документы, ключи SSH и PGP, локальные почтовые ящики, история ICQ, jabber и т.д. Хорошо бы еще сохранять настройки программ, что бы не настраивать их каждый раз. Музыка, видео и фотографии я храню на отдельном диске и их бекап отдельная песня. Там не бекап нужен, а следить за состоянием диска необходимо.
Так же мне необходимо сохранить загрузочные данные, без которых система не загрузиться. Т.е. нужен бекап загрузчика и ядра.
Имея все это я уже смогу спокойно восстановить работоспособность системы за считанные часы.

Как и где их хранит Linux?

В принципе ответ на этот вопрос является ключевым. Ответив на этот вопрос, мы автоматически выходим на уровень понимания таинственности вопроса бекапа. И весь ужас ситуации в том что в Linux изначально нету проблемы бекапа! И именно поэтому я не мог найти ответа на свой вопрос! То есть весь трагизм веселья данной ситуации, в том как хранятся данные в Linux. Все данные пользователя храняться в папке /home/%UserName%/… Все. Сохранив данные этой папки мы сохранили все индивидуальные и персональные данные и настройки системы. Но при этом в папке пользователя не хранятся файлы самих программ. В результате одной и той же программой, но с разными настройками могут пользоваться все пользователи данного компьютера ( в принципе даже не только пользователи конкретного компьютера, но этот вопрос выходит за рамки статьи) Каждая программа будучи запущенной ищет данные необходимые для работы в домашней папке текущего пользователя.
Что же касается загрузчика и ядра то они находятся в папке /boot.

Какие проблемы необходимо решить?

Очень важно понимать что при восстановление системы нам надо вернуть на свои места не только файлы, но и права пользования на них. Это очень важно!!! Я специально выделил этот текст курсивом, что бы вы обратили дополнительное внимание на него. Права доступа к файлам это основа основ!!! Если у вашего PGP ключа права доступа ugo+rwx( 777 ), то у вас нету безопасного шифрования. В моей конфигурации даже у меня нет прав на доступ к ключам PGP и SSH, права есть только у «Сударя». И то ограниченные.
Волшебника который знает все особенности файловой системы Linux, и который может сохранить и восстановить backup файлов с их правами зовут TAR. И он «живет» в linux давным давно. Его не надо отдельно устанавливать. Он также понимает кто такие спец-файлы (устройства, фифо, сокеты, софт/хард-линки).

Программа tar используется для создания tar-архивов и манипулирования ими. Архив – это файл, заключающий в себе содержимое многих файлов. Кроме того, архив идентифицирует имена файлов, их хозяев и т.д. (в архивах также записываются разрешение доступа, пользователь и группа, размер в байтах и время последней модификации. В некотрых архивах еще указываются имена файлов в каждом заархивированном каталоге и информация о каталогах).

Что бы сохранить копию всей системы нам нужно выполнить следующую команду в терминале ( предварительно остановив программы которые активно используют диск)

sudo tar cvjf backup.tar.bz2 --exclude=/home/*/.gvfs --exclude=/var/tmp --exclude=/proc --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/sys / 

Вот и все. На выходе мы получаем архив backup.tar.bz2 который содержит копию всей системы.

Если мы хотим сохранить только домашнюю папку то команда будет выглядеть так:

sudo tar cvjf backup.tar.bz2 --exclude=/home/*/.gvfs /home 

–exclude Указывает на папку которую не надо архивировать. /.gvfs служебная папка Gnome, с ненужным нам хламом.

Получившийся файл мы сливаем в наше тайное хранилище бекапов :-) При необходимости восстановить систему мы:
1) загружаемся с Live CD
2) Монтируем жесткий диск и создаем необходимую структуру папок в Live системе
3) В каталоге с файлом бекапа выполняем команду

sudo tar -xvjf backup.tar.bz2 -C /папка_куда_смонтировали_структуру_системы

TAR «развернет» наш архив системы как будто папка_куда_смонтировали_структуру_системы это / Если мы восстанавливаем архив с /home то команда должна выглядить так:

sudo tar -xvjf backup.tar.bz2 -C /папка_куда_смонтировали_структуру_системы/home

Видите как все просто? Именно поэтому нету никакого специального софта для бекапов. Система умеет все это делать сама из коробки.

Важное дополнение

Таким способом мы не сможем сохранить и восстановить загрузочный раздел нашего диска. А значит после восстановления система не будет грузиться…
Для сохранения загрузочной части нам нужно использовать команду DD. Это команда низкоуровнего копирования, которую нужно использовать с большой осторожностью. При неправильном использование она может не только повредить данные, но и нанести вред вашему жесткому диску!!!
Для удобного копирования загрузочной информации я еще при установки системы создаю для точки монтирования /boot отдельный диск размером в 200 МегаБайт (я также создаю отдельные разделы жесткого диска для точек:/,/home,/var,/tmp. Чего и вам советую) . Таким образом в папку /boot у меня смонтирован раздел диска ( у меня это /dev/sda1 ). И для выполнения копирования загрузочного раздела я использую такой скрипт:

cd /mnt/backups # переходим на диск для резервных копий
sudo umount /boot # отмонтируем раздел boot
sudo dd if=/dev/sda1 | sudo gzip > boot2dd.img.gz # производим посекторное копирование раздела диска в файл
sudo mount /dev/sda1 /boot # монтируем обратно раздел boot

Обратите внимание что команда DD выполняется ТОЛЬКО на от монтированном диске!!!

Итогом данной операции станет «файл-посекторная-копия» раздела /dev/sda1

Восстановить который мы можем c помощью скрипта:

cd /mnt/backups
sudo umount /boot
sudo cat boot2dd.img.gz | sudo gunzip | sudo dd of=/dev/sda1
sudo mount /dev/sda1 /boot

Заключение

Как вы поняли все резервное копирование в linux легко выполняется штатными средствами. И делиться на три части:
1) Копирование всей системы
2) Копирование домашней папки
3) Копирование загрузочного раздела

Я использую bash скрипт запускающийся при простое системы для того что бы раз в месяц копировать состояние всей системы и раз в три дня копировать папкку /home . Резервную копию /boot необходимо делать только если вы обновили версию ядра или установили еще одну операционную систему.

Ссылка на тему на форуме

P.S. Осторожно пользуйтесь командой DD, и да прибудет с вами сила :-)

Запись опубликована в рубрике Linux, Новости, Это интересно с метками , , , , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>