Как настроить резервное копирование линукс

Настройка резервного копирования в Ubuntu за 20 минут.

Для работы над проектами использую svn, который находится на удаленном виртуальном выделенном хосте, под управлением ubuntu 8.04. Со временем объемы данных выросли, как и критичность этих данных. Потеря чего-то снилась в кошмарах. Время от времени копировал репозитории на локальный компьютер. Недавно мне это надоело. И я стал искать возможности автоматизировать это дело. Не буду говорить о поисках и вариантах, расскажу о результатах.

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

Подготовка

Данные будем переливать с помощью SSH, поэтому давайте сначала настроим public и private ключи для локального и удаленного серверов. Делаем это для того, чтобы программа, которая будет переливать данные могла заходить по SSH без пароля.

Оставьте папку по-умолчанию, а пароль сделайте пустым.
Эта команда должна создать в папке ~/.ssh(по умолчанию) два файла — private и public key. private предназначается для локальной машины, pub отправляется на удаленный.

Теперь копируем private key в папку /root/.ssh, чтобы пользователь root так мог пользоваться им

$ cd ~/.ssh
$ sudo mkdir /root/.ssh
$ sudo cp id_dsa /root/.ssh

Теперь надо скопировать public key на удаленную машину, с которой мы хотим копировать данные. Предварительно создайте пользователя backup на удаленной машине(команда adduser). Не забудьте дать этому пользователю права на чтение каталогов, которые вы хотите копировать.

$ cat ~/.ssh/id_dsa.pub | ssh backup@remotehost.ru «cat >> ~/.ssh/authorized_keys2»

Читайте также:  Astra linux отключить брандмауэр

Теперь можем попробывать зайти через 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 это делается, например, так:

Теперь нам нужно создать директорию, где мы собираемся хранить наши «снимки»:

Настройка

Теперь можно перейти к настройке, собственно, 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 :

#Добавляем папку /etc/ с локальной машины в папку localhost/
backup /etc/ local/
#Добавляем папку /var/svn с удаленной машины в папку remotehost/
backup backup@remotehost.ru:/var/svn/ remotehost/

Помните, что в конфигурационном файле недопустимы пробелы — используйте только табы.

Пробный запуск

Запустим 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

Читайте также:  Mint linux live iso

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

Кстати, 6 раз в сутки не означает, что размер будет в 6 раз больше, чем если копировать всего 1 раз в сутки. Если в промежутки между копированиями не будет изменений в файлах, то общий размер копий почти не изменится.

Дополнительная информация

С помощью параметра backup_script можно также настроить резервное копирование баз данных MySQL, да и вообще всего, чего угодно. Я не описывал сей процесс, т.к. у меня он не используется и ничего конкретного сказать не могу.
Подробнее можно почитать в гугле. По запросу rsnapshot вылезает куча релевантных ссылок, правда на английском языке.

Прошу особо не ругать, на гуру администрирования(да и linux) я не похож, но довольно долго искал, как просто автоматизировать резервное копирование — нашел способ, решил поделиться.
Но конструктивной критике и предложениям буду, конечно, рад.
UPD: Эта же статья в моем блоге

Источник

System backup

A system backup is the process of backing up the operating system, files and system-specific useful/essential data. [It] primarily ensures that not only the user data in a system is saved, but also the system’s state or operational condition. This helps in restoring the system to the last-saved state along with all the selected backup data. [1]

Using Btrfs snapshots

Using LVM snapshots

Using rsync

Using tar

Using SquashFS

Bootable backup

Having a bootable backup can be useful in case the filesystem becomes corrupt or if an update breaks the system. The backup can also be used as a test bed for updates, with the testing repo enabled, etc. If you transferred the system to a different partition or drive and you want to boot it, the process is as simple as updating the backup’s /etc/fstab and your boot loader’s configuration file.

This section assumes that you backed up the system to another drive or partition, that your current boot loader is working fine, and that you want to boot from the backup as well.

Читайте также:  Linux shadow and shadow

Update the fstab

Without rebooting, edit the backup’s fstab by commenting out or removing any existing entries. Add one entry for the partition containing the backup like the example here:

/dev/sdaX / ext4 defaults 0 1

Remember to use the proper device name and filesystem type.

Update the boot loader’s configuration file

For Syslinux, all you need to do is duplicate the current entry, except pointing to a different drive or partition.

Tip: Instead of editing syslinux.cfg , you can also temporarily edit the menu during boot. When the menu shows up, press the Tab key and change the relevant entries. Partitions are counted from one, drives are counted from zero.

For GRUB, it is recommended that you automatically re-generate the main configuration file. If you want to freshly install all GRUB files to somewhere other than /boot , such as /mnt/newroot/boot , use the —boot-directory flag.

Also verify the new menu entry in /boot/grub/grub.cfg . Make sure the UUID is matching the new partition, otherwise it could still boot the old system. Find the UUID of a partition with lsblk:

$ lsblk -no NAME,UUID /dev/sdXY 

where /dev/sdXY is the desired partition (e.g. /dev/sdb3 ). To list the UUIDs of partitions GRUB thinks it can boot, use grep:

# grep UUID= /boot/grub/grub.cfg

First boot

Reboot the computer and select the right entry in the boot loader. This will load the system for the first time. All peripherals should be detected and the empty folders in / will be populated.

Now you can re-edit /etc/fstab to add the previously removed partitions and mount points.

Snapshots and /boot partition

If your file system supports snapshots (e.g., LVM or Btrfs), these will most likely exclude the /boot partition or ESP.

You can copy the boot partition automatically on a kernel update to your root partition with a pacman hook (make sure the hook file is owned by root):

/etc/pacman.d/hooks/95-bootbackup.hook
[Trigger] Operation = Upgrade Operation = Install Operation = Remove Type = Path Target = usr/lib/modules/*/vmlinuz [Action] Depends = rsync Description = Backing up /boot. When = PostTransaction Exec = /usr/bin/rsync -a --delete /boot /.bootbackup

Источник

Оцените статью
Adblock
detector