Фотогалереи

Услуги

Помощь при использовании сайта

Как сделать бэкап в Linux

Многие задаются вопросом о том как сохранить собственные настройки системы, и личные данные так, чтобы потом в случае непредвиденных обстоятельств можно было их легко восстановить. Насколько мне известно в Windows и Mac OS X с этим проблем нет, так как средства для резервоного копирования предустановлены в обоих операционных системах. Ни в одном дистрибутиве Linux опробованных мной я не видел инструментов по умолчанию идущих с системой предоставляющих такой функционал. Если быть точным, то средства для резервного копирования в Linux есть по умолчанию, но не все новички знают о них и тем более не знают как использовать эти инструменты.

Существует три основных способа для создания резервной копии данных и системы в Linux

  • Использование архиватора для создания сжатой копии системы
  • Снятие образа жесткого диска
  • Использование специальных, дополнительных утилит

На мой взгляд первый способ самый универсальный и применим практически в любой ситуации. Достоинства этого метода в том, что архив с резервной копией занимает не так уж много места и существует возможность выбора что включать в бэкап, а что исключить.
Для первого способа нам потребуется целевая система установленная на разделе/разделах жесткого диска и флешка/DVD диск с Live системой. Например Live CD с которого Вы ставили систему. Стоит заметить, что потребуется также раздел на который нужно сохранить данные. Его также нужно примонтировать
Итак предположим что ОС установлена на первом разделе первого жесткого диска (/dev/sda1). Загружаемся с Live CD и монтируем этот раздел скажем в /mnt

sudo mount /dev/sda1 /mnt

Монтируем раздел на котором предполагается разместить бэкап

sudo mkdir /backup
sudo mount /dev/sda3 /backup

Используемая в Linux команда ls -a /mnt поможет проверить тот ли раздел мы смонтировали. Если вышла ошибка, то следует запустить cfdisk и найти нужный раздел после чего примонтировать его как показано выше.
Далее переходим в директорию примонтированного раздела с системой и смотрим какие директории в ней мы будем бэкапить.

cd /mnt
ls -a

Увидев список директорий включаем нужные в бэкап.

sudo su
tar -cvjpf /backup/Backup.tar.bz2 bin boot dev etc home lib lib32 lib64 media mnt opt proc root sbin sys tmp usr var

Если у Вас немного другой набор директорий, например отсутствуют каталоги lib32 и lib64, то советую просто архивировать все директории созданные не Вами. С директориями созданными Вами поступайте на свое усмотрение. В некоторых мануалах советуют исключить из бэкапа /proc, /dev, /sys, но я наученный собственным опытом скажу, что этого делать не стоит. Бэкап должен быть полным и включать все системные директории. При монтировании директорий с виртуальными файловыми системами таких как /proc и /sys их содержимое окажется пустым, но это избавит Вас от создания их вновь и присвоения им правильных разрешений (прав). Результатом выполнения этих действий будет появление в целевой директории /backup архива Backup.tar.bz2 содержащего резервную копию системы которую всегда можно восстановить.

Для того чтобы рекурсивно затарить все директории и файлы в текущей директории нужно:

tar -cvjpf /backup/Backup.tar.bz2 .

Обращаю внимание, что символ "." это не опечатка. В данном случае содержимое архива не будет иметь абсолютных путей и предпочтительнее, особенно в процессе восстановления.
Для того чтобы исключить какие либо файлы и директории из создаваемого бэкапа нужно их указать. Исключение возможно как файлов, так и директорий, а также по паттернам. Подробнее читайте в man tar.

tar -cvjpf /backup/Backup.tar.bz2 . --exclude=cisco.jpg --exclude=folder

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

sudo rm -rf /mnt/*

Копируем архив с бэкапом на целевой раздел

sudo su
cp /backup/Backup.tar.bz2 /mnt/

Переходим в нашу будущую систему и разархивируем бэкап

cd /mnt
tar -xvjpf Backup.tar.bz2

Ключ "v" рекомендую оставить, так как можно будет видеть возможные ошибки и сам процесс распаковки. Все, на этом восстановление резервной копии завершено.

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

sudo su
dd if=/dev/sda1 bs=8M of=/backup/Backup.img

Если раздел был большой, то запасаемся терпением и идем пить чай/кофе или что то покрепче пока выполняется создание образа. Главное не пить "чего то покрепче" в больших количествах перед его восстановлением.
Восстановление еще проще: Нужно загрузиться с Live CD, примонтировать раздел на котором лежит бэкап и восстановить его командой (при условии что восстанавливаемая система по прежнему на /dev/sda1. Ошибки в лучшем случае грозят потерей коллекции прона тщательно отобранного Вами за последние годы проведенные в стадии полового созревания, а в худшем - разбитием монитора клавиатурой когда Вы осознаете чего лишились :-D).

dd if=/backup/Backup.img bs=8M of=/dev/sda1

После завершения выполнения задачи Вы получите точную копию той системы которая была на момент создания резервной копии.

Третьим способом создания/восстановления резервных копий я абсолютно не пользовался за ненадобностью. Могу лишь предположить, что используя этот метод Вам не удастся контролировать содержимое бэкапа и такой софт потянет еще множество различных зависимостей нужных для его работы. Если все вышеописанное показалось Вам сложным, то можно попробовать самостоятельно найти в Google или репозитории использумомого дистрибутива такой софт. На вскидку можно посоветовать Bacula или Amanda

3.863635
22 голосов
Ваша оценка: Нет


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".
Аватар пользователя Infra_HDC

пользовался раньше dd и tar, в последнее же время -- связкой dump-restorre для работы с ext2/3 (тоже неплохой вариант)

Аватар пользователя admin

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

Аватар пользователя anonymous

По третьему способу советую Clonezilla, восстановление корня занимает около 10 мин.

Аватар пользователя admin

Как вариант Clonezilla тоже заслуживает внимания. Неоднократно слышал что довольно полезная софтина для создания бэкапов.

Аватар пользователя anonymous

мне понравился первый метод, но есть вопрос.
Как сохранить раздел /home только с настройками, без музыки, фильмов, других личных файлов?

Аватар пользователя admin

Тут по идее можно тем же первым способом, но делать это надо выборочно. Все конфиги обычно лежат в ~/.config

Много конфигов сохраняется в файлах имя которых начинается с "."

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

//Всех благ.

Аватар пользователя anonymous

Ну да. В еринципе, так я и предполагал поступить. Спасибо.

Аватар пользователя admin

Добавил в статью способ по исключению файлов и директорий их бэкапа. Думаю найдете.

Аватар пользователя anonymous

Пример скрипта копирования файлов с фильтрацией(массив с расширениями)
Можете переписать для своих нужд..
http://vixdevelop.blogspot.ru/2017/02/backup.html