Как сделать бэкап в 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
пользовался раньше dd и tar, в последнее же время -- связкой dump-restorre для работы с ext2/3 (тоже неплохой вариант)
Да, тоже думаю неплохой вариант. Позже добавлю в статью и эти методы. Только сначала на себе их опробоват надо.
По третьему способу советую Clonezilla, восстановление корня занимает около 10 мин.
Как вариант Clonezilla тоже заслуживает внимания. Неоднократно слышал что довольно полезная софтина для создания бэкапов.
мне понравился первый метод, но есть вопрос.
Как сохранить раздел /home только с настройками, без музыки, фильмов, других личных файлов?
Тут по идее можно тем же первым способом, но делать это надо выборочно. Все конфиги обычно лежат в ~/.config
Много конфигов сохраняется в файлах имя которых начинается с "."
Можно написать скрипт конечно, но опять же скрипт под любые хомяки не напишешь, так как многое индивидуально. Здесь скорее всего вам придется самому тянуть свою ношу.
//Всех благ.
Ну да. В еринципе, так я и предполагал поступить. Спасибо.
Добавил в статью способ по исключению файлов и директорий их бэкапа. Думаю найдете.
Пример скрипта копирования файлов с фильтрацией(массив с расширениями)
Можете переписать для своих нужд..
http://vixdevelop.blogspot.ru/2017/02/backup.html