SolveItproblems

SolveITProblems is a project of QFormat.net intellectual club

SolveITProblems это проект интеллектуального клуба QFormat.net

четверг, 15 августа 2013 г.

Установка и настройка сервера rsync, а также бэкап Linux системы посредством SSH

Доброго времени суток. Сегодня я расскажу как можно сделать бэкап линукс системы посредством SSH, а также рассмотрим еще один немного тривиальный но эффективный способ бэкапирования системы.

Все данные примеры буду рассматриваться в рамках линукс дистрибутива CentOS.



Итак для начала нам потребуется установить rsync. Но установка его начинается с установки пакета xinetd (нужен для пуска сервера rsync). Забегая вперед хочу сказать что rsync должен быть установлен на всех машинах которые вы хотите бэкапить.

yum install -y xinetd

Ставим сам rsync:
yum install -y rsync


Открываем конфиг rsync для xinetd:
vi /etc/xinetd.d/rsync

В конфигурации заменяем это:
disable = yes

На это:
disable = no


Применяем настройки xinetd:
/etc/init.d/xinetd restart
или service xinetd restart


Добавляем xinetd в автозапуск:

chkconfig xinetd on


Удостоверяемся, что теперь xinetd слушает порт rsync:

netstat -lnpt | grep 873
видим такую строку - tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7721(может быть другое значение)/xinetd


Далеее создаем конфиг /etc/rsyncd.conf и указываем имена групп:

uid = nobody
gid = nobody



Затем применяем изменения:
/etc/init.d/xinetd restart


Все, настройка rsync закончена.

Теперь приступим к бэкапингу систем. У нас будет производиться бэкап одного сервера на другой по средством SSH протокола.

Обозначения:

 A - сервер с которого будем делать бэкап.
 B - сервер на который будем делать бэкап.

   1. Для начала нужно определиться что будем бэкапить, т.е. какие каталоги (и их подкаталоги) 
      файловой системы. Внимательно просмотрев файловую систему сервера A, 
      создадим список таких каталогов в файле backup.lst.

 backup.lst:
 /etc/
 /var/local/billing/data/
 /usr/local/etc/
 .....

        (обратите внимание на завершающий / в конце каждой строки)
      
   2. Теперь нужно определиться с местом куда будем делать резервное копирование. 
      Для этого  создадим не привилегированного пользователя на сервере B.

 root@B:~$ mkdir /var/backup
 root@B:~$ adduser --home /var/backup backup
      
   3. Теперь нужно разрешить пользователю root (сервер A) доступ по ssh на сервер B 
      (пользователь backup) без пароля т.е. по ключу.

      Для этого нужно сгенерировать публичный ключ на сервере А.

 root@A:~$ ssh-keygen -t rsa

      и добавить полученный ключ A:/root/.ssh/id_rsa.pub в конец файла 
      B:/var/backup/.ssh/authorized_keys2 на сервер B.
      
   4. На сервере B в домашнем каталоге пользователя backup нужно продублировать
      те каталоги которые мы собираемся бэкапить (т.е. список каталогов из файла backup.lst)

 backup@B:~$ mkdir -p etc/
 backup@B:~$ mkdir -p var/local/biiling/data/
 backup@B:~$ mkdir -p usr/local/etc/
 .....

 значение -p создает недостающие родительские каталоги для каждого  указанного каталога. (подробнее man mkdir ;))
      

   5. Осталось добавить в крон вызов скрипта backup.sh на сервере А,
      запуск должен выполняться из под root'а.

backup.sh:
#!/bin/bash

# полный путь к вашему списку каталогов
BACKUP_LST=/etc/backup/backup.lst

cat ${BACKUP_LST} | while read Res; do
    rsync -e ssh -acq --delete --force $Res backup@B:/var/backup$Res
done


Таким образом можно бэкапить между собой n-ное количество серверов друг на друга :)

А теперь поговорим про более тривиальный но эффективный способ бэкапирования.

Чтобы создать бэкап всей системы, хватит команды:

sudo tar cvpzf /backup.tgz —exclude=/proc —exclude=/lost+found —exclude=/backup.tgz —exclude=/mnt —exclude=/sys /

Тут правами суперпользователя (sudo) создаём тарбол (tar с ключём c) и архивируем его архиватором gz (ключ z). При этом с помощью ключа —exclude исключаем из архива системные директории и файлы устройств и, конечно же, сам архив (чтобы он рекурсивно не начал паковаться сам в себя). В итоге, получаем в корне наш полный архив системы в файле backup.tgz.
Как его потом развернуть? Ну, во-первых, нужна будет всё-таки работающая система. Например, можно провести «чистую» установку (или же загрузиться с LiveCD). Будем считать, что у нас есть работающая система, в которой мы хотим развернуть наш архив.

Хватит тоже одной команды:
tar xvpfz /backup.tgz -C /

Хочу заметить что после того как вы получите архив вашей системы вы можете передать его себе посредством FTP (SFTP).
На этом все, приятного дня и удачных экспериментов.  

Комментариев нет:

Отправка комментария