Бекап файловой системы Linux-сервера с помощью rsync

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

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

Примечание: rsync работает только при установке его на обоих серверах - A и B.

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

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

(обратите внимание на завершающий / в конце каждой строки)

2. Теперь нужно определиться с местом куда будем делать резервное копирование.
Для этого создадим не привилегированного пользователя на сервере B.

[email protected]:~$ mkdir /var/backup
[email protected]:~$ adduser --home /var/backup backup

3. Теперь нужно разрешить пользователю root (сервер A) доступ по ssh на сервер B
(пользователь backup) без пароля т.е. по ключу.

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

[email protected]:~$ ssh-keygen -t rsa

и добавить полученный ключ A:/root/.ssh/id_rsa.pub в конец файла
B:/var/backup/.ssh/authorized_keys2 на сервер B.

4. На сервере B в домашнем каталоге пользователя backup нужно продублировать
те каталоги которые мы собираемся бекапить (т.е. список каталогов из файла backup.lst)

[email protected]:~$ mkdir -p etc/
[email protected]:~$ mkdir -p var/local/biiling/data/
[email protected]:~$ 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 [email protected]:/var/backup$Res
done

Вот собственно и все, у меня так бекапятся 5 серверов друг на дружку :)

Источник www.opennet.ru

free-templates.ru