Как сделать бэкап ubuntu
Своевременно сделанная резервная копия операционной системы Ubuntu является одной из самых важных профилактических мер, направленных на поддержание стабильности работы сервера и его экстренное восстановление в случае аварии или сбоя. Но данная инструкция будет полезна и простым пользователям десктопных систем, которые с её помощью смогут создавать своеобразную точку восстановления данных. Для выполнения процедуры создания резервной копии пригодится утилита, необходимая для создания и редактирования архивов в ОС Linux – tar.
Широкий спектр услугпо выделенным северам
и мультиклауд-решениям Конфигурация VPS и бесплатный тест уже через 2 минуты Организация вашей IT-инфраструктуры на основе мультиклауд-решения
Создание копии системных данных
Пошагово создание резервной копии системы Ubuntu выглядит следующим образом:
1. Для Ubuntu подходит команда sudo su, а для Debian – используем su -l root
2. Смотрим количество места, которое уже использовано системой, и которое остается свободным. Поскольку backup будет сжиматься в архив, то по объему он получится в разы меньше, чем занимает ОС на данный момент.
Как указано в описанном выше конкретном случае система находится по адресу /dev/sda2 и своим объемом она занимает в целом 2.1G объема. Бекап будет скопирован в корневой раздел этого же диска, где имеется 67 Гб свободного пространства.
3. Для продолжения создания резервной копии системы Linux перемещаемся в корневой раздел cd /.
4. Переходим к копированию системы. Но здесь важно исключить разделы /proc /lost+found /sys, как и сам архив /backup.tgz, кроме того, убираем и раздел /web. Если необходима идеально чистая резервная копия, то предварительно следует выполнить очистку логов в /var/log , и удалить кеш выбранных нами архивов apt-get clean.
5. Посмотрим ls -alh
Полученный архив с файлами следует надежно хранить отдельно и при необходимости его можно будет сразу использовать для восстановления данных системы.
Пошаговая инструкция по восстановлению из back-апа
Проще всего восстанавливать систему на том же оборудовании с теми же виртуальными разделами, с которых делался бекап. Это займет всего несколько минут. Порядок действий будет таков:
1. Выполняем загрузку с диска Live CD Linux, никаких сторонних программ не требуется, и копируем архив в корневой каталог.
2. Распаковываем выбранный архив непосредственно в папку расположения
3. Остается только прописать место, куда выполняется загрузка. Если разметка делалась с помощью GParted, то стоит предусмотреть около 10 свободных мегабайт, в противном случае grub2 может и не стать.
4. Далее нужно создать отдельные каталоги /proc /sys. При перезагрузке обратите внимание на логи в процессе загрузки.
Если системные данные нужно перенести на новое устройство, то всё слегка усложняется:
1. Распаковываем наш архив.
2. С помощью Live CD проверяем распределение дисков и их объем.
3. При повторной перезагрузке сервера входим в grub2 и редактируем названия имеющихся дисков.
4. Когда запуск невозможен при «отсутствии файловой системы», придется переделать заново initrd загрузчик, с учетом требуемых модулей. Для этого примонтируют разделы /proc и /sys к базе, где компилируются /mnt/proc /mnt/sys, а потом можно пройти авторизацию в chroot /mnt.
Это наиболее легкий способ создания и последующего восстановления из резервной копии работающей системы Linux, ведь в процессе не требуется устанавливать сторонние утилиты.
Для работы над проектами использую svn, который находится на удаленном виртуальном выделенном хосте, под управлением ubuntu 8.04. Со временем объемы данных выросли, как и критичность этих данных. Потеря чего-то снилась в кошмарах. Время от времени копировал репозитории на локальный компьютер. Недавно мне это надоело. И я стал искать возможности автоматизировать это дело. Не буду говорить о поисках и вариантах, расскажу о результатах.
Итак, мы имеем удаленный хост под управлением ubuntu, с некоторым массивом довольно критичных данных. Довольно логичным было бы настроить бэкап прямо на удаленном хосте, с помощью tar по крону, rsyns и т.д. Но, т.к. место на виртуальном выделенном хостинге довольно дорого и использовать его лучше по делу, идеально было бы, чтобы данные автоматически копировались на какую нибудь локальную машину, место на которой хоть отбавляй. В моем случае это файловый сервис в офисе, под управлением все той же Ubuntu.
Подготовка
Данные будем переливать с помощью SSH, поэтому давайте сначала настроим public и private ключи для локального и удаленного серверов. Делаем это для того, чтобы программа, которая будет переливать данные могла заходить по SSH без пароля.
$ ssh-keygen -t dsa
Оставьте папку по-умолчанию, а пароль сделайте пустым.
Эта команда должна создать в папке
/.ssh(по умолчанию) два файла — private и public key. private предназначается для локальной машины, pub отправляется на удаленный.
Теперь копируем private key в папку /root/.ssh, чтобы пользователь root так мог пользоваться им
/.ssh
$ sudo mkdir /root/.ssh
$ sudo cp id_dsa /root/.ssh
Теперь надо скопировать public key на удаленную машину, с которой мы хотим копировать данные. Предварительно создайте пользователя backup на удаленной машине(команда adduser). Не забудьте дать этому пользователю права на чтение каталогов, которые вы хотите копировать.
/.ssh/id_dsa.pub | ssh [email protected] "cat >>
Теперь можем попробывать зайти через ssh на удаленную машину:
В случае, если все сделано правильно, нас впустит без пароля.
На удаленной машине ставим нормальные права на чтение публичного ключа:
remotehostru$ chmod 700 .ssh
remotehostru$ chmod 400 .ssh/authorized_keys2
remotehostru$ exit
Настройка rsnapshot
rsnapshot — утилита для создания копий состояния файловых систем на базе rsync. Она упрощает создание периодических копий с локальной и удаленных машин по ssh. Она использует, по возможности, жесткие связи, что позволяет существенно уменьшить объем необходимого дискового пространства. (цитата отсюда)
Установка
$ sudo apt-get install rsnapshot
Если вы используете не debian-подобный дистрибутив, rsnapshot наверняка тоже есть в репозиториях вашего дистрибутива. Для CentOS, при включенных RPMForge это делается, например, так:
Теперь нам нужно создать директорию, где мы собираемся хранить наши «снимки»:
$ sudo mkdir /var/snapshots
Настройка
Теперь можно перейти к настройке, собственно, rsnapshot:
$ sudo nano /etc/rsnapshot.conf
Вместо nano вы можете использовать любой другой редактор, например vi, или gedit, если работаете в GNOME.
Настроить нужно следующие параметры:
snapshot_root - директория, в которую вы хотите сохранять "снимки".
interval xxx yy - ххх - название интервала(например hourly, daily), yy - количество снимков для каждого. Например:
interval hourly 6
interval daily 7
Означает, что мы хотим хранить 6 ежечасных копий и 7 ежемесячных. Если уже доступно указанное количество копий, rsnapshot будет заменить старую более новой.
Расскомментируйте cmd_cp. cmd_ssh расскоментируйте и измените на
Настройка бэкапа осуществляется командой backup <откуда> <куда>:
Помните, что в конфигурационном файле недопустимы пробелы — используйте только табы.
Пробный запуск
Запустим rsnapshot:
$ rsnapshot hourly
Второй параметр означает интервал, который мы задали в конфигурационном файле.
Команда может выполняется продолжительное время. После выполнения, смотрим, что она создала:
$ ls -l /var/snapshots
Пока что в директории должен быть один каталог: hourly.0. При следующем запуске rsnapshot будет создавать каталоги hourly.1, hourly.2 и т.д., пока не упрется в максимум, указанный нами в конфигурационном файле.
Настройка cron
В Ubuntu автоматически создается файл /etc/cron.d/rsnapshot со следующим содержанием:
0 */4 * * * root /usr/bin/rsnapshot hourly
30 3 * * * root /usr/bin/rsnapshot daily
0 3 * * 1 root /usr/bin/rsnapshot weekly
30 2 1 * * root /usr/bin/rsnapshot monthly
Вот и все. Теперь у вас 6 раз в сутки должен автоматически создаваться снимок данных с вашего удаленного сервера. Данные в сохранности, да еще и географически распределены.
Кстати, 6 раз в сутки не означает, что размер будет в 6 раз больше, чем если копировать всего 1 раз в сутки. Если в промежутки между копированиями не будет изменений в файлах, то общий размер копий почти не изменится.
Дополнительная информация
С помощью параметра backup_script можно также настроить резервное копирование баз данных MySQL, да и вообще всего, чего угодно. Я не описывал сей процесс, т.к. у меня он не используется и ничего конкретного сказать не могу.
Подробнее можно почитать в гугле. По запросу rsnapshot вылезает куча релевантных ссылок, правда на английском языке.
Прошу особо не ругать, на гуру администрирования(да и linux) я не похож, но довольно долго искал, как просто автоматизировать резервное копирование — нашел способ, решил поделиться.
Но конструктивной критике и предложениям буду, конечно, рад.
UPD: Эта же статья в моем блоге
Возможность случайного повреждения системы, даже такой надёжной как Linux, всегда существует. Как правило, переустановка ОС занимает много времени и сил. Чтобы избежать неприятностей подобного рода следует пользоваться резервным копированием (бэкап) Ubuntu Linux. Я не буду останавливаться на различных способах создания резервной копии Ubuntu, а расскажу метод, которым пользуюсь сам и советую другим. Мне его посоветовал один мой друг. Вы также можете посмотреть о создании резервной копии всех установленных программ в системе в этой статье. Но этот способ лучше использовать не для бэкапа системы, а в тех случаях, когда нам нужно установить аналогичное ПО на много компов, имеющих одинаковую ОС и конфигурацию.
Создание бэкапа ubuntu через Rsync
Положительные стороны создания бэкапа убунту именно при помощи rsync заключаются в том, что для копирования и восстановления системы нет необходимости в установке дополнительных пакетов и ПО. Всё делается при помощи консоли. Но не пугайтесь работы с консолью! В нашем случае всё будет предельно просто и понятно.
Пару слов о rsync:
Данная команда является очень мощным инструментом для работы с файлами. Ознакомиться с полным списком её возможностей можно написав в консоли man rsync . Предлагаемый мною метод резервного копирования ubuntu через rsync является самым простым и лёгким в освоении.
Бэкап Ubuntu на личном опыте
Чтобы всё было предельно просто — расскажу как у меня происходит backup системы. Мой жесткий диск разбит на 5 разделов, из которых 2 раздела отведено под Ubuntu — системный раздел / и раздел для информации пользователей /home. Я копирую всё содержимое системного раздела / на раздел пользователей в специальную папку /home/.backup. В случае неполадок ОС Ubuntu я запускаюсь с LiveCD и просто копирую бэкап убунту на системный раздел. Основываясь на этом примере ниже будет описана процедура резервного копирования и восстановления Ubuntu Linux.
Резервное копирование (бэкап) Ubuntu
- sudo — получаем права суперпользователя root;
- rsync — выполняем команду резервного копирования и задаём дополнительные аргументы -aulv и -x ;
- / —раздел, который подлежит копированию (системный раздел);
- /home/.backup/ — место куда будут скопированы файлы (раздел пользователей).
Восстановление Ubuntu через rsync
Допустим, у нас накрылась система и нужно восстановить убунту. Запускаем компьютер при помощи LiveCD с Linux, открываем консоль. Теперь нужно примонтировать (подключить) системный раздел и раздел пользователей, чтобы совершить восстановление системы и здесь можем пойти двумя путями. Первый способ основан на кликах мышки, а второй — на работе в консоли.
Способ №1
Открываем файловый менеджер и видим в левом углу список разделов жесткого диска на ПК. Подключаем их нажатием мышки, после чего они станут доступны для обзора, а их точка монтирования будет находится в директории /media/ . Определяем какой из разделов системный, а какой пользовательский. Недостаток такого способа в том, что разделы получат сложный адрес точки монтирования вроде /media/2F45115E1265048F. Запоминаем адрес точки монтирования системного и пользовательского разделов. Теперь переходим к непосредственному восстановлению, пропускаем раздел "Способ №2".
Способ №2
Непосредственное восстановление
1. Копируем файлы из резервной копии. Используем такую же команду: sudo rsync -aulv -x /media/2/.backup/ /media/1/
при использовании графического способа №1 вместо /media/1/ и /media/2/ у вас будут другие точки монтирования !
2. Отмонтируем разделы по окончанию копирования: sudo umount /media/1 sudo umount /media/2 Перезагружаем компьютер и наслаждаемся восстановленной из бэкапа Ubuntu.
Видеоурок по резервному восстановлению Ubuntu
На основании вышеописанного материала планирую записать показательный видеоурок по восстановлению Убунту в виртуальной системе.
Так же есть альтернативный способ в Windows, за счет применения программы WinSCP, так же похож на Norton Commander разница лишь в том, что работает она исключительно по сети, а так же производит подключение через SSH протокол. Обратите внимание, что при подключении вы должны быть root пользователем, а на сервере заранее должен быть активирован и установлен супер пользователь (прописан пароль)
Простое резервное копирование Ubuntu
Для того что бы выполнить резервное копирование всей системы, достаточно выполнить всего одну команду:
Как его потом развернуть? Ну, во-первых, нужна будет всё-таки работающая система. Например, можно провести «читсую» установку (или же загрузиться с LiveCD). Будем считать, что у нас есть работающая система, в которой мы хотим развернуть наш архив. Хватит тоже одной команды:
Благодаря ключику p они сохраняются в исходном состоянии и правами.
Поскольку заранее не известно какого типа у Вас данные и, соответсвенно, насколько плотно они сожмутся. Как минимум вы должны иметь на диске 50% свободного места, для ее проверки выполните седующую команду:
В реальности же, если у вас не лежит множество других архивов на диске и всяких фильмов с прочими медиа, то должно хватить и 30%.
Автоматическое резервное копирование Ubuntu
на этот же диск
Создаем файл backup.save в корне, в котором будет скрип для резервного копирования:
Жмем Ctrl+O для сохранения и Ctrl+X для выхода
Создаем папку /mnt/backup в которую будем делать резервную копию системы:
Делаем наш файл backup.save исполняемым:
Заходим в mc (для удобства):
Далее идем в корень и открываем наш файл нажатием F4 и вставляем в наш backup.save файл следующий код (нажав Shift+Insert ):
Этот код создает архив дата_и_время_создания.tgz в папке /mnt/backup/ исключая папки: proc, lost+found, mnt, sys
Жмем F2 для сохранения и F10 для выхода. Проверяем работоспособность просто запустив наш файл в mc нажатием Enter .
Если все сделали правильно, то в папке /mnt/backup появится наш файл. Периодически заходя в эту папку мы увидим как меняется размер файла. Время резервного копирования естественно зависит от количества информации на сервере и его скорости.
Автоматическое резервное копирование Ubuntu на другой диск или по сети
Примечание
Сеть должна быть настроена
Винчестер, на который будем делать резервную копию, должен быть подготовлен
Подготавливаем жесткий диск
Смотрим наш жесткий диск и монтируем в /mnt/hdd :
Чтобы после перезагрузки сервера hdd автоматом монтировался, допишем строку в файл /etc/fstab :
Ctrl+O для сохранения и Crtl+X для выхода
Подготавливаем сетевую папку
Если для доступа к сетевой папке требуется логин и пароль:
Если имя сетевой папки содержит пробел, то необходимо написать команду следующим образом:
Для того что бы размонтировать папку выполните команду:
Я не стал прописывать в /etc/fstab автомонтирование сетевой папки. Я буду монтировать ее только тогда, когда будет запускаться скрипт на резервное копирование.
Создаем файл backup.save в корне системы и делаем его исполняемым:
Жмем Ctrl+O для сохранения и Ctrl+X для выхода. Сделаем его исполняемым:
Для проверки запустим его и проверим его работу. Для создания запуска по расписанию выполним следующее:
название файла и его местонахождения в данном случае роли не играет
В файл пропишем следующее:
После этого в каталоге /var/spool/cron/crontabs/ будет создан файл "root" примерно с таким содержимым:
Для примера пару шаблонов:
Восстановление системы из резервной копии
2 thoughts on “ Резервное копирование Ubuntu ”
Добрый день. WordPress сломал код. Поправил.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Читайте также: