Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  frox
  SARG
  samba & ClamAV
  named
  proftpd
  cacti
  SAMBA+AD+NT ACL
  MySQL
  hylafax
  DDNS+DHCP
  cvsupd
  Samba как PDC
  Основы LDAP
  LDAP+SSL
  LDAP auth
  knockd
  rsync
  MRTG
  Rejik
  Jabber - OpenFire
  Samba(PDC) + Ldap
  squid+AD
  ATSlog
  vsftpd
  LDAP: samba, dns, dhcp
  Free-SA
  cups-samba на samba+AD
  irc + services
  Nagios - мониторинг сети
  TeamSpeak
  icecast2
  verlihub (p2p)
  Icecast2 + Darkice
  OOPS
  vsftpd + mysql
  Amanda
  HAVP
  Рыбалка на FreeBSD
  DNS сервер NSD
  DNS сервер Unbound
  mpd5, msmtp, dynamic ip
  ProFTPd + LDAP
  OpenVPN + LDAP
  Samba (PDC+BDC)
  BIND & AD
  POWERDNS
  3proxy
  eGroupWare
  GLPI
  SugarForge CRM
  Bacula
  Mysql - базовое описание
  Asterisk IP PBX
  Samba & CUPS & AD & ACL
  SMSTools 3
  Samba+ NT ACL
  phpmyadmin
  1С:Предприятие 8.1
  PurefFTPd
  qemu network
  AimSniff
  comms/scmxx
  Zoneminder
  Openfire Jabber Server
  Zoneminder 2
  Принт-Сервер Samba+LPD & AD
  Кластер OpenLDAP 2.4
  Lightsquid
  Установка Zabbix-1.6
  Установка net2ftp
  VSFTPD + AD && MySQL
  Network UPS Tools
  mpd5 L2TP client
  Apache 2.2 as a proxy
  ejabberd+mysql+icq
  HotSpot
  Установка и использование Zenoss на FreeBSD 7.2
  mysql-proxy
  DNS zones
  squid+sams+sqstat
  transmission-daemon
  Squid+AD (group access)
  SysAid Server
  MySQL Master+Master
  proftpd file auth&quota
  usb_modeswitch
  NSDadmin
  iperf Тест скорости между хостами
  Простой факс-сервер mgetty+sendfax
  SQUID-MultiCpuSystem
  vsftpd + system users
  Syslog server
  Температура в серверной
  Nagios+Digitemp
  Avast! FreeBSD
  Настройка git+gitosis
  Firefox SyncServer
  Scan+Print server FreeBSD 9
  proftpd,pgsql,web
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> программы —> rsync

Backup с помощью rsync

Автор: fr33man.


Решил настроить backup. Первая мысль была: ночью сжимать все в один большой архив и отправлять по сети с помощью scp, например.. Но этот
вариант не устраивал меня как минимум по двум причинам:

- Копироваться будут абсолютно все файлы, даже которые не изменились
- Для авторизации придется использовать ключи, что не есть хорошо для безопасности

Прогуглив этот вопрос нашел замечательную утилиту rsync ее и стал мучить. ))

Итак, работать все будет следующим образом: на компьютере, который мы будем бэкапить, ставим и настраиваем rsync сервер, на backup сервере настраиваем
rsync клиент. После этого синхронизиркем данные на backup сервере с данными на других серверах. Для примера, имя бэкап сервера будет: backup,
а имя машины с которой мы будем синхронизировать данные — mail:
mail# uname -rsn
FreeBSD mail.teachers 6.1-RELEASE
mail#


/root/> uname -rsn
FreeBSD backup 6.1-RELEASE-p6
/root/>

Сначала настроим rsync сервер. Идем в порты ставить:
mail# cd /usr/ports/
mail# make search name='rsync'
... skipped ...

Port:   rsync-2.6.8_2
Path:   /usr/ports/net/rsync
Info:   A network file distribution/synchronization utility
Maint:  pav@FreeBSD.org
B-deps:
R-deps:
WWW:    http://rsync.samba.org/

... skipped ...

mail# cd /usr/ports/net/rsync/
mail# make install clean
mail# rehash
mail# 

Рихтуем rsyncd.conf:
mail# cd /usr/local/etc/
mail# ls -la | grep rsync
-r--r--r--   1 root   wheel    766 Oct  5 21:21 rsyncd.conf
-r--r--r--   1 root   wheel    766 Oct  5 21:21 rsyncd.conf.sample
mail#

rsyncd.conf:

# Файл приветствия
motd file = /etc/new_motd

# Лог файл
log file = /var/log/rsyncd.log

# Писать в лог о скачивание файлов
transfer logging = true

# Описание секции ETC
[etc]
		# Путь к директории
        path = /etc/
		
		# Под каким uid'ом работать
        uid = root
		
		# Только чтение
        read only = yes
		
		# Разрешать просмотр файлов
        list = yes
		
		# Комментарий
        comment = ETC directory
		
		# Хосты, которым разрешен доступ
        hosts allow = 192.168.1.249
		
		# Разрешенные пользователи
        auth users = backup
		
		# Путь к файлу с паролями
        secrets file = /usr/local/etc/rsyncd.scrt

# Далее может идти описание других секций(по аналогии с samba и шарами)

Создаем необходимые файлы и директории

mail# cat > /etc/new_motd
HELLO FROM RSYNC

mail# touch /var/log/rsyncd.log
mail# chmod 0600 /var/log/rsyncd.log
mail# chown root:wheel /var/log/rsyncd.log
mail# cat > /usr/local/etc/rsyncd.scrt
backup:123456
mail# chown root:wheel /usr/local/etc/rsyncd.scrt
mail# chmod 0600 /usr/local/etc/rsyncd.scrt
mail# mv /usr/local/etc/rc.d/rsyncd /usr/local/etc/rc.d/rsyncd.sh
mail# echo rsyncd_enable=\"YES\" >> /etc/rc.conf
mail# /usr/local/etc/rc.d/rsyncd.sh start
Starting rsyncd.
mail# ps ax | grep rsyn
97920  ??  Ss     0:00.00 /usr/local/bin/rsync --daemon
97922  p0  S+     0:00.01 grep rsyn
mail# 

Теперь перейдем к настройке клинта, точнее настраивать там ничего не надо... Нужно просто проверить как все работает:

/root/> cd /usr/ports/net/rsync/
/usr/ports/net/rsync/> make install clean
... skipped ...
/usr/ports/net/rsync/> rehash
/usr/ports/net/rsync/>

Проверяем работу сервера:


/root/> rsync mail::
HELLO FROM RSYNC


etc             ETC directory
var             VAR directory
/root/>

Теперь пробуем авторизоваться:

/usr/ports/net/rsync/> rsync backup@mail::etc
HELLO FROM RSYNC


Password:
@ERROR: auth failed on module etc
rsync error: error starting client-server protocol (code 5)
 at main.c(1296) [receiver=2.6.8]
/usr/ports/net/rsync/> rsync backup@mail::etc
HELLO FROM RSYNC


Password:
drwxr-xr-x        2048 2006/10/05 21:27:03 .
lrwxrwxrwx          12 2006/09/15 21:24:09 aliases
-rw-r--r--       16384 2006/09/17 14:27:21 aliases.db
-rw-r--r--         209 2006/05/07 08:00:23 amd.map
-rw-r--r--        1234 2006/05/07 08:00:23 apmd.conf
-rw-r--r--         231 2006/05/07 08:00:23 auth.conf
-rw-r--r--         737 2006/05/07 08:00:23 crontab
-rw-r--r--         108 2006/05/07 08:00:23 csh.cshrc
-rw-r--r--         481 2006/05/07 08:00:23 csh.login
-rw-r--r--         110 2006/05/07 08:00:23 csh.logout
... skipped ...

/usr/ports/net/rsync/>

В первый раз я ввел неверный пароль. Все конечно хорошо, но если запускать бэкап по крону, то как вводить пароль? Для этого можно
указать password-file:
/usr/ports/net/rsync/> cat > /usr/local/etc/rsyncd.scrt
123456
/usr/ports/net/rsync/> chown root:wheel /usr/local/etc/rsyncd.scrt
/usr/ports/net/rsync/> chmod 0600 /usr/local/etc/rsyncd.scrt
/usr/ports/net/rsync/> rsync --password-file=/usr/local/etc/rsyncd.scrt \
? backup@mail::etc
HELLO FROM RSYNC


drwxr-xr-x        2048 2006/10/05 21:27:03 .
lrwxrwxrwx          12 2006/09/15 21:24:09 aliases
-rw-r--r--       16384 2006/09/17 14:27:21 aliases.db
-rw-r--r--         209 2006/05/07 08:00:23 amd.map
-rw-r--r--        1234 2006/05/07 08:00:23 apmd.conf
-rw-r--r--         231 2006/05/07 08:00:23 auth.conf
-rw-r--r--         737 2006/05/07 08:00:23 crontab
-rw-r--r--         108 2006/05/07 08:00:23 csh.cshrc
-rw-r--r--         481 2006/05/07 08:00:23 csh.login
-rw-r--r--         110 2006/05/07 08:00:23 csh.logout
... skipped ...
/usr/ports/net/rsync/>

На сервере, в логах будет примерно следующее:

mail# tail -3 /var/log/rsyncd.log
2006/10/05 21:53:21 [98220] connect from backup.teachers (192.168.1.249)
2006/10/05 21:53:21 [98220] rsync on etc from backup@backup.teachers (192.168.1.249)
2006/10/05 21:53:21 [98220] sent 1807 bytes  received 99 bytes  total size 411665
mail#

На backup сервере создадим директорию, где будут храниться забэкаппенные файлы и начинаем backup:

/root/> df -alh | grep backup
/dev/ad1s1d    144G    2.0K    133G     0%    /backup
/root/> mkdir -p /backup/mail.teachers/etc/
/root/> chmod -R 0700 /backup/mail.teachers/
/root/> ls -la /backup/mail.teachers/
total 6
drwx------  3 root  wheel  512 Oct  5 22:01 .
drwxr-xr-x  3 root  wheel  512 Oct  5 22:01 ..
drwx------  2 root  wheel  512 Oct  5 22:01 etc
/root/> rsync --update --recursive \
? --password-file=/usr/local/etc/rsyncd.scrt backup@mail::etc \
? /backup/mail.teachers/etc/
HELLO FROM RSYNC


skipping non-regular file "aliases"
skipping non-regular file "namedb"
skipping non-regular file "rmt"
skipping non-regular file "termcap"
/root/>

Ссылочки rsync качать не стал. ;). Смотрим, что у нас получилось:

/root/> ls -la /backup/mail.teachers/etc/
total 528
drwx------  18 root  wheel   2048 Oct  5 22:03 .
drwx------   3 root  wheel    512 Oct  5 22:01 ..
drwxr-xr-x   2 root  wheel    512 Oct  5 22:03 X11
-rw-r--r--   1 root  wheel  16384 Oct  5 22:03 aliases.db
-rw-r--r--   1 root  wheel    209 Oct  5 22:03 amd.map
-rw-r--r--   1 root  wheel   1234 Oct  5 22:03 apmd.conf
-rw-r--r--   1 root  wheel    231 Oct  5 22:03 auth.conf
drwxr-xr-x   2 root  wheel    512 Oct  5 22:03 bluetooth
-rw-r--r--   1 root  wheel    737 Oct  5 22:03 crontab
-rw-r--r--   1 root  wheel    108 Oct  5 22:03 csh.cshrc
-rw-r--r--   1 root  wheel    481 Oct  5 22:03 csh.login
-rw-r--r--   1 root  wheel    110 Oct  5 22:03 csh.logout
... skipped ...
/root/>

На сервере:
mail# tail -3 /var/log/rsyncd.log
2006/10/05 22:00:05 [98379] send backup.teachers 
[192.168.1.249] etc (backup) ssh/sshd_config 3042
2006/10/05 22:00:05 [98379] send backup.teachers 
[192.168.1.249] etc (backup) ssl/openssl.cnf 7869
2006/10/05 22:00:05 [98379] sent 1286010 bytes  
received 7581 bytes  total size 1264419
mail#

Как видите, у нас передалась вся директория etc и все поддиректории. Давайте добавим в файл /etc/hosts пробел и попробуем сделать бэкап:

mail# echo "" >> /etc/hosts
mail#

Теперь бэкапим:

/root/> rsync --update --verbose --recursive \ 
? --password-file=/usr/local/etc/rsyncd.scrt \
? backup@mail::etc /backup/mail.teachers/etc/
HELLO FROM RSYNC


receiving file list ... done
skipping non-regular file "aliases"
skipping non-regular file "namedb"
skipping non-regular file "rmt"
skipping non-regular file "termcap"
hosts

sent 126 bytes  received 6567 bytes  4462.00 bytes/sec
total size is 1264421  speedup is 188.92
/root/>

Как видите, у нас передался только файл hosts, потому что изменился только он.

На этом вроде все.... Если найду еще интересные подробности выложу. ))



размещено: 2006-11-08,
последнее обновление: 2006-11-08,
автор: fr33man

оценить статью:

Сергей, 2007-08-17 в 13:24:50

А почему ты не использовал dump? Там есть инкрементные дампы, что как раз и делает то, что ты хочешь

Cat, 2007-08-20 в 16:01:08

Хорошая статья, не увидел правда описание ключей, но нащёл их, поискав в инете на одном блоге тоже статейку по rsync
думаю хорошее дополнение :-)

gmn, 2008-02-19 в 17:14:19

и права на файл с паролем должны быть 600 - иначе "auth failed".

zg, 2008-02-20 в 10:03:37

кхм... бэкап вроде как предполагает откат до некоторой точки, а тут как я понял, в папке /backup/mail.teachers/etc/ будет харниться просто актуальная версия конфигов... хотя конечно, если их тарить, то будут бэкапы :)

А что будет если файл конфига удалится или повредится?

kozlov_ao, 2008-09-25 в 12:10:51

нужно добавить параметр --delete-after. А то при удалении файлов на сервере, на бекапе они все равно остануться.. но это нужно наверное тока именно для синхронизации :)

sys_err, 2009-09-22 в 23:35:30

В статье не освещена к сожалению тема работы rsync в chroot-е.

b10s, 2010-03-30 в 11:16:10

очепятка тут "После этого синхронизиркем данные на backup сервере.."

Статья на 5 для быстрого старта) Инфа об алгоритме протокола www.openbsd.ru/docs/rsync.html

Kalabi, 2010-04-27 в 16:29:52

Был найден странный баг - при попытке сихронить Maidir папки, бывало замирало на определенных письмах. -z - компрессия на лету ( -z, --compress              compress file data during the transfer
) проблемы вроде решило :)

Роман, 2011-05-06 в 10:07:26

Отличная статья. Вот статья про альтернативный вариант резервного копирования сайта только тестирование проходило под Linux Debian, может кому-то будет интересно:
здесь

Андрей, 2011-08-24 в 21:59:52

Стоит подробнее изложить rsync ssh. Самая детальная и толковая статья для старта. Автору честь и слава.


Оставьте свой комментарий:
Ваше имя:   *
e-mail:  
жирный
наклонный
подчёркнутый
ссылка
цвет
Нынешний год:   *
 


Хостинг HOST-FOOD

2014-07-27, lissyara
gmirror

Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
2013-08-20, zentarim
Scan+Print server FreeBSD 9

Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
2011-11-20, BlackCat
Разъём на WiFi-карту

Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
2011-09-14, manefesto
Настройка git+gitosis

Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
подписка

    вверх      
Статистика сайта
Сейчас на сайте находится: 15 чел.
За последние 30 мин было: 113 человек
За сегодня было
13669 показов,
891 уникальных IP
 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0468 секунд
Из них PHP: 39%; SQL: 61%; Число SQL-запросов: 77 шт.
Исходный размер: 170662; Сжатая: 24735