|    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
 
 | 
Комментарии пользователей [10 шт.]