Резервное копирование в Ubuntu

В этой заметке речь пойдет о резервном копировании в Ubuntu. Обычно я делаю несколько резервных копий. Цели при этом преследуются разные, быстрое восстановление системы если что то пойдет не так, сохранение настроек, сохранение проектов… Разные цели предполагают разные средства. Расскажу про те которые использую я.

Начну издалека, с установки системы. Я применяю разные схемы разбиения диска, но для рабочих машин использую следующую: жесткий диск разбивается по такой схеме: по 15-20 Гб на корень / и /home, swap располагаю в файле на корневом разделе. Оставшаяся часть жесткого диска монтируется в /media/, туда же монтируются и разделы других жестких дисков (если они есть, т.к. последнее время все лишние диски переставлены на домашний NAS). В результате имеем два раздела жесткого диска об архивации которых нужно думать. Остается ее, архивацию настроить.

Резервное копирование домашнего каталога

Переустановить систему легко, а вот восстановить потерянную работу куда как тяжелее(если вообще возможно). Для резервного копирование домашнего каталога я использую Duplicity, а для хранения копий Ubuntu One (кстати, если вы еще не подключены можете это сделать по этой ссылке, это прибавит к аккаунту 500 Мб). Ubuntu One интегрирован в систему, так почему бы его не задействовать по полной. Duplicity шикарен, использую везде где только можно, только не напрямую, а через интерфейсы к нему. Для Linux это графический Déjà Dup и консольный Duply, в Windows – Duplicati.

В Ubuntu Déjà Dup как и Ubuntu One встроен в систему, поэтому для домашнего каталога ничего изобретать не пришлось. Осталось только настроить чего не нужно архивировать (.cache, кеши браузеров, загрузки …), расписание и ввести пароль для шифрования. Теперь все работает само, можно даже не вспоминать. Единственное что отключил расписание на ноутбуке, чтобы не попасть на трафик в мобильном интернете.

Резервное копирование корневого каталога

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

Пока не добавилось причин делать это. Причины две первая желание пробовать новые версии начиная с альфы на реальном железе, хотелось бы в случае неудачи вернуть все назад. Вторая появилась необходимость разносить настроенную систему на несколько машин. Основной мотив тут лень, лень настраивать сначала рабочую машину, потом ноут …, а так раз настроил и готово. Можно было бы использовать Live CD (описание пары таких), но мне интересно было найти способ не мешающий работать и не требующий лишних перезагрузок.

Такой способ нашелся это – FSArchiver (FileSystem Archiver), программа для резервного копирования. Промежуточный вариант между tar и dd, сохраняет содержимое файловой системы в архив. Может работать с любой UNIX, главное поддержка ядром. В отличии от tar может воссоздавать файловую систему при извлечении данных. В отличие от dd понимает файловые системы и архивирует только данные. Может восстановить файлы на другую файловую систему или раздел диска отличный от исходного. Использует контрольные суммы для проверки целостности файлов. Для полного счастья можно даже обойтись без командной строки, есть GUI для QT – QT4-FSArchiver и GTK – GPyFSA.

Создаем резервную копию системы:

sudo fsarchiver savefs -v -j2 -z5 /путь_сохранения/backup.fsa /dev/hda1

Извлекаем архивную копию:

sudo fsarchiver restfs /путь_сохранения/backup.fsa id=0,dest=/dev/hda1

где: -v(verbose) — показывает список файлов, -j — количество рабочих потоков, обычно равно количеству ядер процессора, -z — степень сжатия от 1 до 9, id=0 номер файлf образа.

Резервная копия для MBR

Иметь резервную копию MBR, никогда не помешает. Особенно если используются хитрые схемы разбиения дисков. Делать будет с помощью утилиты dd (dataset definition, можно перевести как формирование данных). Обычно расшифровывается как disk dump, еще вариант (больше подходящий по сути :-))- delete data. Так что утилитой нужно пользоваться осторожно. При правильном подходе позволяет сделать многое. Но для резервного копирования системы лучше не использовать.

Создаем резервную копию MBR:

sudo dd if=/dev/hda of=/путь_сохранения/backup.mbr bs=512 count=1

Извлекаем:

sudo dd if=/путь_сохранения/backup.mbr of=/dev/hda bs=512 count=1

Параметры: if – источник копирования, of – файл назначения, bs – количество байт за раз, счетчик операций копирования.

Резервное копирование – UNIX way

Православный способ резервного копирования в *nix системах это использовать tar (tape archive). Главное достоинство есть везде. Второе – умеет все. Минус чтобы это все уметь нужны многие знания, а с ними и многие печали. Можно не вообще не пользоватся tar’ом, но основы знать желательно. Резервная копия корневого каталога с помощью tar создается примерно так:

sudo tar -cvpzf /путь_сохранения/backup.tgz --exclude=/swap.fs --exclude=/cdrom --exclude=/dev --exclude=/home --exclude=/lost+found --exclude=/media --exclude=/mnt --exclude=/proc --exclude=/run --exclude=/sys --exclude=/tmp /

Извлекается (потребуется загрузиться с Live CD) так:

sudo tar --same-owner -xvpzf /путь_сохранения/backup.tgz -C /

где: -c(create) — создать новый архив(-x(extract) — соответственно будет извлечь),-p(permissions) — сохранять информацию о правах доступа, -v(verbose) — показывает список файлов, -f(file) — сохранять архив в файл, -z — сжимать gzip( -j — bzip2). Опция –exclude служит для исключения файлов из архива. Опция –same-owner сохраняет владельцев файлов. -C — указывает каталог куда распаковать.

Задачу по вводу всех опций можно облегчить с помощью такого скрипта:

#!/bin/bash
if [ `id -u` != 0 ]; then error "You must be root to use this script"; fi
BACKUP=/home/backup/backup.tgz
ROOTD=/
mv $BACKUP $BACKUP.old
tar -cC $ROOTD/ -cvvzf $BACKUP ./ --exclude={"./proc","./dev","./home"}

P.S.

Ну как то так. Алгоритм если кратко получается такой: Разбили диск, установили ось(и) резервируем MBR. Настраиваем, ставим нужные пакеты, ненужные удаляем, попутно настраиваем копирование домашнего каталога. Чистим систему sudo apt-get autoremove && sudo apt-get autoclean. Еще лучше воспользоваться Ubuntu Tweak. С помощью tar или FSArchiver создаем резервную копию системного раздела. Спокойно спим.

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

  • ExMuser

    Камрад, а что делать, если Убунта стоит на wubi и других вариантов нет? Мне нужно сохранить все настройки, приложения и хомяка. Поможет ли такой вариант: сохраняем на другой (виндовый) раздел полностью каталог “ubuntu”, куда установили и настроили всё под себя. Потом издеваемся над системой и, закономерно, кладём её. Что делаем: заходим в винду, сносим убитую горем wubi и ставим с нуля ubuntu. При первой нормальной загрузке открываем наутилус, и копируем забэкапленную папку “ubuntu” в тот каталог, куда установлена только что чистая система. Не думаю, что NTFSная папка будет заблокирована в убунте. Потом перезагружаемся, и получаем сохраненную ранее систему. Как думаете, проканает такой финт ушами?