Ключевые слова:rsync, backup, diff, (найти похожие документы)
From: Roman Sozinov <http://sozinov.blogspot.com>
Date: Mon, 3 Jan 2008 14:31:37 +0000 (UTC)
Subject: Резервное копирование при помощи rdiff-backup
Оригинал: http://sozinov.blogspot.com/2006/08/backup-with-rdiff-backup.html
Подискутировав и поинтересовавшись на форумах, решил продолжать
использующийся механизм резервного копирования данных на
backup-сервер, при котором сам backup-сервер инициирует копирование с
серверов.
Лог:
1. Генерируем пару ключей на backup-сервере для пользователя root.
backup# ssh-keygen -t dsa -b 2048 -N ""
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
ea:41:ed:8d:76:32:9f:1b:f5:41:68:3d:e0:10:a0:5d root@backup
2. Копируем содержимое файла /root/.ssh/id_dsa.pub с backup-сервера в
файл /root/.ssh/authorized_keys на те сервера, которые нуждаются в
резервном копировании. В соответствие с форматом файла authorized_keys
добавляем в него необходимые опции: from="backup". После тестирования
ssh-соединения можно добавить необязательные, но предоставляющие
дополнительную безопасность, опции: no-X11-forwarding,
no-port-forwarding, no-pty, no-agent-forwarding.
3. На backup-сервере и всех серверах, учавствующих в резервном
копировании необходимо установить утилиту rdiff-backup
Debian
apt-get install rdiff-backup
FreeBSD
cd /usr/ports/sysutils/rdiff-backup
make && make install
from sources (необходимо наличие библиотек и header-файлов
для librsync, python)
wget http://savannah.nongnu.org/download/rdiff-backup/rdiff-backup-VER.tar.gz
tar zxf rdiff-backup-VER.tar.gz
cd rdiff-backup-VER
python setup.py install
4. В соответствие с форматом backup-скрипта(приведен ниже), составляем
list-файлы, содержащие описание директорий для резервного копирования.
#!/bin/sh
# $1 - list
StartTime=`date +%H:%M:%S`;
cat $1 | while read args
do
# format of entries in list-file
# $1 - remote host
# $2 - remote dir
# $3 - local dir
# $4 - pattern (copy dirs, which contains files with that pattern. For example 'log|tar')
set $args
if [ "$1" = "#" ]
then
continue;
fi
echo "$1::$2 > $3"
rdiff-backup --create-full-path --exclude-symbolic-links --exclude-sockets \
--exclude-special-files --exclude-fifos --exclude-device-files --no-hard-links \
--include-regexp ".*($4)" --exclude $2 $1::$2 $3
done
EndTime=`date +%H:%M:%S`;
echo "$StartTime - $EndTime";
5. Автоматизируем действия с помощью cron, periodic.
очень хорошая статья.
Блин. Обидно только, что при помощи всех этих манипуляций нельзя бэкапить примонтированные шары винды. оффтопик. да.
Но, иногда полезно.
Вернее, забэкапить-то можно, но вот при восстановлении ошибки от питона типа File ..main.py line 304 и куча колдовских изъяснений..