Бэкап или быстрый способ вернуть всё как было

Изображение пользователя vasilisk.

Если вы хотите иметь точку отката для вашей операционной системы, т. е. при необходимости восстановить "все как было" в случае неудачного эксперимента - необходимо освоить способы создания образов разделов. В нашем случае необходимо снять образ с корневого раздела, и других системных разделов кроме /home (домашнего раздела) и swap (раздела подкачки), если таковые имеются.

Для этого существует множество проприетарных (коммерческих) программ, таких как Norton ghost, Acronis True Image и другие, но описание работы с ними вы можете найти в соответствующей литературе, а мы рассмотрим применение штатной линуксовой утилиты — dd.

Эта утилита работает с блочными устройствами (например, раздел диска /dev/sda1, флешка /dev/sdh1) и создает их посекторные копии. Что это значит — а то, что для dd нет такого понятия как файл, каталог, занятое место, свободное место — она считывает сектора жесткого диска и может сохранить эту информацию уже как файл-образ. Преимущества этой утилиты являются одновременно и ее недостатками — размер файла-образа будет в точности равен размеру копируемого раздела, т. е. если мой корневой каталог находится на разделе в 20 ГБ, из которых занято только 5 ГБ, то размер файла-образа будет ровно 20 ГБ. Согласитесь, малозаманчивая перспектива, ведь хранить такие бэкапы весьма затруднительно.

Ее синтаксис:

dd if=/dev/sda1 of=file.img

,где /dev/sda1 — это жесткий диск, с которого снимается образ, а file.img — создаваемый файл-образ.

Причем здесь перечислены только минимально необходимые параметры (см. man dd)

Чтобы не сохранять образ такого громадного размера на диске (да и просто может не быть столько свободного места), мы воспользуемся архиваторами: zip, gzip, bzip2, включенными в конвейер с утилитой dd. Результат работы архиватора будет налету перенаправляется в файл.
Определение наименований разделов

Итак, создадим копию корневого раздела (домашний каталог трогать не будем), но, сперва нам надо выяснить кто есть кто, т. е. точные наименования разделов. Это предельно важный момент, потому что если вы неправильно укажете раздел при развертывании образа, то безвозвратно потеряете данные на разделе, который ошибочно указали в качестве целевого. (Но не следует думать, что такой проблемы не в проприетарных программах - там дела обстоят еще хуже, например, Acronis True Image назначает буквы разделам, которые не всегда совпадают с буквами в самой Windows, и расположены они в другом порядке, поэтому единственный "маячок" - это размер раздела и его метка, если она прочиталась. В линуксе все намного проще - наименования разделов сами по себе не меняются никогда!)

Запустим команду: df -h и посмотрим на результат:

sergey@sergey-desktop:~$ df -h
Файловая система Разм Исп Дост Исп% смонтирована на
/dev/sda8 16G 3,5G 12G 24% /
tmpfs 755M 0 755M 0% /lib/init/rw
varrun 755M 108K 754M 1% /var/run
varlock 755M 0 755M 0% /var/lock
udev 755M 156K 754M 1% /dev
tmpfs 755M 164K 754M 1% /dev/shm
lrm 755M 2,2M 752M 1% /lib/modules/2.6.28-13-generic/volatile
/dev/sda7 188G 151G 38G 81% /home
/dev/sr0 696M 696M 0 100% /

Мы видим, что наш корневой раздел находится на разделе /dev/sda8 — следовательно его и будем «бэкапить» (а при восстановлении в него будем развертывать образ!), осталось только решить — куда записывать файл-образ. Я запишу в домашний каталог (/dev/sda7) - место есть, да и скорость записи будет выше, но хранить бэкапы лучше на сменных носителях - флешки, USB жесткие диски и т.д., поэтому после проверки контольной суммы (см. раздел "развертывание образа") образ необходимо перенести.

Примечание: я исхожу их того, что система установлена на 3 раздела: /, /home и swap, если у вас больше, то надо делать бэкап и остальных разделов.
Создание образа раздела

Итак, бэкапим корневой раздел:

sudo dd if=/dev/sda8 bs=8096 | gzip -9cf > kubuntu.gz

Примечание: если увас недостаточно места в домашнем каталоге - необходимо прописать полный путь для сохранения образа, (например у вас есть раздел, смонтированный в /media/films, то команда будет выглядеть так: sudo dd if=/dev/sdb1 bs=8096 | gzip -9cf > /media/films/kubuntu.gz изменится и путь для обращения к файлу-образу при восстановлении).

Учтите — это долго и нудно, так что придется подождать.

Мы создали сжатый gzip`ом файл-образ корневого раздела ubuntu.gz, его размер 4,3 ГБ, что гораздо меньше чем самого корневого раздела (16 ГБ).

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

Посчитаем md5 сумму раздела /dev/sda8:

sudo dd if=/dev/sda8 bs=8096 | md5sum - > kubuntu.md5

Это контрольная сумма корневого раздела записанная в файл root.md5, к ней мы вернемся чуть позже.
Развертывание образа

Это самый важный и ответственный этап - собственно для чего все и затевалось, если с вашей системой случился крах - вы сможете быстро получить назад свою готовую и полностью настроенную систему. (Переустановка не всегда лучший выбор).

Для этого нам потребуется загрузиться с Live CD любого линукс дистрибутива, например, компакт диска с кубунту. Теперь, внимание, при загрузке с Live CD разделы жесткого диска не примонтированы, (а без доступа к домашнему каталогу хост системы мы не сможем обратиться к файлу-образу!), поэтому необходимо сделать это вручную. Вы помните, что наш домашний каталог /home/sergey лежал в /dev/sda7, монтируем его:

sudo mount /dev/sda7 /mnt

Теперь мы знаем, что наш файл-образ лежит в /mnt/sergey (это мой домашний каталог — у вас будет свой!).

Примечание: если ваш файл-образ находится на сменном устройстве, то его необходимо подключить физически и примонтировать.

Развертываем образ, но сперва проверим правильность его распаковки:

sudo gunzip -c /mnt/sergey/kubuntu.gz | md5sum

Сравните этот результат с тем, что вы создали раньше в файле kubuntu.md5:

cat /mnt/sergey/kubuntu.md5

Примечание: эту процедуру неплохо бы сделать сразу после создания образа и после переноса бэкапа на сменный носитель.

Они должны совпасть (только вместо ../sergey - ваше имя!), теперь развертываем образ:

sudo gunzip -c /mnt/sergey/kubuntu.gz | sudo dd of=/dev/sda8 bs=8096

Примечание: несколько раз проверьте правильность указания целевого раздела (у меня это /dev/sda8, у вас будет свой).

И напоследок проверим, а без ошибок ли все прошло:

sudo dd if=/dev/sda8 bs=8096 | md5sum

Контрольная сумма свежеразвернутого раздела опять-таки должна совпадать с:

cat /mnt/sergey/kubuntu.md5

Если все совпадает — то вы успешно откатили систему к исходному состоянию. Перезагружайтесь и получите свое "все как было".

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

если желаете можно создать скрипт и сделать запись в crontab чтобы скриптик запускался по вашему расписанию

P.S. я мало что придумал и переделал. Статья по сути ремейк поста взятого с http://ubuntologia.ru/backup

P.S.S Лично я создал скрипт переодически пользуюсь данной инструкцией. Очень сильно помогает при неудачных экспериментах с системой, да и нервы в покое

Комментарии (3)

0
picaro - 8 Август, 2009 - 17:09
Изображение пользователя picaro.

Это конечно не наш метод ;), но хелп полезный.

0
Leviafan - 27 Август, 2009 - 12:34

А могу я с помощью этого перенести систему со старого жесткого диска на новый?

0
Гость - 18 Январь, 2012 - 15:15

вполне

Отправить комментарий

CAPTCHA на основе изображений
Введите цифры