Linux32 - Блог



LINUX32

Свобода выбирать


ArchLinux
Блог >> 2015 >> Апрель


15.04.2015

Backup установленной системы




Добрый день.

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

Переходя с убунты на арч, я нашел и установил почти все программы которыми пользовался на убунте. Или в официальном репозитарии, или в ауре. Кроме одной, remastersys. Эта программа для создания Live-системы из своей установленной системы. Программа не сложная, результат ее меня полностью устраивал.

На арче ее не оказалось из-за различий в системных компонентах арча и убунты. А периодически делать бэкапы необходимо. Тем более арч - это система-конструктор и было бы обидно потерять ее после долгих настроек и подгонок под себя (особенно в первый раз устанавливая archlinux). Поэтому, после средней продолжительности поиска, я нашел archiso. Программа конечно не такая user-friendly как remastersys (который, кстати, уже не разрабатывается), но все его функции выполняет отлично.

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

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

Это все теория. Теперь приведу практический пример.

Для начала нужно подготовить место куда копировать, так как бэкап может быть достаточно объемным (в зависимости от вашей системы). Я, например, монтирую в /mnt отдельный раздел на который будет осуществляться копирование. Перехожу в папку /mnt, создаю в ней две папки: backup и out, перехожу в папку backup и выполняю такую команду:

rsync -axv /* . --delete --delete-excluded --exclude=/{dev/*,proc/*,sys/*,tmp/*,run/*,mnt/*,media/*,lost+found,var/lib/pacman/sync/*,var/cache/*,var/tmp/*,root/.bash_history,root/.thumbnails/*} --exclude=/home/*/.{thumbnails/*,mozilla/firefox/*.default/Cache/*,cache/chromium/*,bash_history,xsession-errors,local/share/recently-used.xbel}


В результате в этой папке появляется почти вся файловая структура вашей системы. Почти, потому что ключом --exclude мы исключили из копирования системные и временные папки и файлы (/dev, /proc, /sys, /tmp и т. д.). Вы можете отредактировать исключаемые файлы под свои нужды. Или хотя бы убедиться что эта команда в данном виде вам подходит.

• ключ -a - указывает что копирование файлов будет происходить рекурсивно в "архивном" режиме, который гарантирует сохранение символьных ссылок, файлов-устройств, атрибутов, разрешений и т.д.

• ключ -x - при копировании не выходить за пределы файловой системы.

• ключ -v - вывод подробной информации о копировании.

• ключ --delete - удаляет файлы, которые есть в принимающей папке, но которых нет в передающей папке.

• ключ --delete-excluded - в дополнение к файлам, удаляемым на приемной стороне из-за отсутствия их на передающей, удаляет также любые исключенные параметром --exclude файлы на приемной стороне.

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

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

Теперь вводим команду:

tar -caf "../out/my_backup.tar.gz" *


И через некоторое время получаем в папке /mnt/out архив с именем my_backup.tar.gz. Немного пояснений: ключи -cf - указывают tar создать архив с указанным именем. А ключ -a говорит тару автоматически определять по указанному расширению архива какой программой сжимать содержимое. В данном случае архив будет сжат программой gzip. * - означает что архивироваться будут все файлы, находящиеся в рабочей папке.

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

Теперь пару слов о том как восстановить систему из архива если она вдруг испортилась. Для этого загружаемся с любой линуксовой лайв-системы. Монтируем куда-нибудь (я приверженец /mnt) раздел со сломанной системой и раздел с бэкапом, переходим в папку, куда смонтирован раздел старой системы, удаляем все что там есть и выполняем следующую команду:

tar -xf <путь/до/бэкапа>


Ждете пока разархивируется. Затем с помощью chroot входите в новую систему, правите, если нужно /etc/fstab, /etc/mkinitcpio.conf, создаете initramfs-образы:

mkinitcpio -p linux


и обновляете меню загрузчика груб:

grub-mkconfog -o /boot/grub/grub.cfg


Выходите из chroot и перезагружаетесь уже в востановленную систему!

Может быть с первого прочтения все это выглядит очень сложным, но на самом деле нужно ввести всего лишь две команды для архивирования и три для восстановления. А если их объединить в скрипт, то вообще можно полностью все автоматизировать.

К слову сказать, мне за 5 лет использования арча пока еще не пришлось ни разу воспользоваться этим методом восстановления. Если и появляются какие-нибудь проблемы, они не настолько серьезные чтобы восстанавливать систему из бэкапа. Хотя само осознание наличия бэкапов придает уверенности.

Надеюсь эта статья поможет начинающим арчеводам экспериментируя меньше бояться сломать свою систему.

Статья


Ваш комментарий:

Имя:
E-mail:
Код с картинки:
Комментарий: