Резервное копирование при помощи rsync
- Информация о материале
- Категория: Servers (ru)
- Опубликовано: 22.03.2011, 12:51
- Автор: Super User
- Просмотров: 2571
Недавно возникла задача делать резервное копирование почтовой базы.
Обычными средствами типа cp и dd получается некрасиво. По этому выбор пал на rsync.
Тем более что с его помощью можно копировать только новые и измененные файлы, то есть делать инкрементальный бекап.
Начальные условия
Есть два сервера:
-
bcup-server — сервер, на котором будут храниться резервные копии почтовой базы
-
mail-server — почтовый сервер, с которого будут копироваться файлы.
Решение
На bcup-server создаем скрипт /root/bcup.sh со следующим содержимым:
#!/bin/bash
rsync -rc -t -e ssh --rsync-path=/usr/bin/rsync --temp-dir=/tmp user@mail-server:/var/mail /mnt/share/mail
На сервере mail-server создаем пользователя user у которого есть права на чтение файлов почтовой базы.
Теперь на сервере bcup-server нужно настроить доступ на mail-server для пользователя user без пароля с авторизацией по ключу.
Для автоматицации резервного копирования на сервере bcup-server добавляем в /etc/crontab строку:
8 1 * * * root /root/bcup.sh
Резервное копирование теперь настроено и будет выполняться наждые сутки в 1:08.
Теперь поясню использованные параметры rsync:
-e ssh — использовать SSH протокол в качестве транспорта
-t — сохранять время модификации;
-r — рекурсивно
-c — для принятия решения о том пересылать файл или нет используется контрольная сумма
–rsync-path=/usr/bin/rsync — путь до rsync на машине-источнике
–temp-dir=/tmp - каталог для временных файлов во время пересылки
user@mail-server:/var/mail — пользователь@хост:Путь-к-каталогу-источнику
/mnt/share/mail — путь к каталогу, где будут храниться резервные копии.
При указании путей есть небольшая тонкость. Если в конце пути источника поставить слеш, то скопируется содержимое указанного каталога, если же слеш опустить — то в резервном хранилище появится каталог источник вмечте со всем содержимым.