Пример конфигурации

Пример простейшей конфигурации для rsyncd

1
2
3
4
5
6
7
8
9
10
11
 motd = /etc/motd
 log file = /var/log/rsync.log
 transfer logging = true
 
 [name]
         path = /home/name
         uid = name
         read only = no
         list = yes
         comment = home for name
         hosts allow = 192.168.0.0/255.255.255.0

Здесь разрешаем чтение и запись в домашнюю директорию пользователя name от имени name для всех, кто находится в сети 192.168.0.*.

Закрываем работу на IPv6

Если на сервере используется IPv4 и IPv6, то вам может потребоваться заставить работать rsync только через один из этих видов. На примере Debian это можно сделать следующим образом. Зайдите в файл

/etc/default/rsync

Найдите строчку

RSYNC_OPTS=‘’

И приведите её к виду

RSYNC_OPTS=‘-4’

Перегружаем сервис

/etc/init.d/rsync restart

И проверяем:

1
2
 root@server:~# netstat -antpu | grep rsync
 tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      25219/rsync

иметь копии всего, что творят сотрудники в общих шараx

Итак, есть задача: нужно иметь копии всего, что творят сотрудники в общих “шарах”, при этом нужно уметь восстановить не только то, что было удалено, но и что изменено. Нет проблем, нам для этого просто понадобится rsync. Удобен тем, что будут копироваться только те данные, которые были изменены, что означает просто минимальную нагрузку.

  • Ставим бесплатную версию cwRsync (можно найти тут)

  • В шедуллер (он же Планировщик заданий) закидываем файлик backup.cmd, который содержит такую команду:

1
2
3
 C:\Program Files\cwRsync\bin>rsync -av -P --backup --backup-dir
 /cygdrive/E/backup_alt/%date:~-10,2%%date:~-7,2%%date:~-4,4%%time:~-11,2%%time:~-8,2% 
 /cygdrive/D/share/ /cygdrive/E/backup/

Учтите, это одна строка. Здесь share - расшаренный каталог на диске D, backup - каталог для хранения, что ясно из названия. Ставим на выполнение раз в 10-30 минут, в зависимости от пожеланий и интенсивности изменения файлопомойки.

Итак, что делает эта команда:

  • Первое выполнение перенесёт все файлы как есть в E/backup/

  • При последующих выполнениях

** изменнённые файлы появятся там же, где и в шаре, а старая версия появится в папке 201328121324 в E/backup_alt/(то есть дата+время)

** удалённые файлы будут перемещаться в E/backup_alt/ так же в датированную папку

Теперь, если кто-то изменил файл и потом прибежал с просьбой восстановить это дело 10-минутной давности, то нет проблем, восстановим. Если удалил - аналогично. Папки больше определённого времени (больше года, например) можно просто удалять, но это уже на рассмотрение сисадмина.

резервное копирование с помощью rsync по ssh без сертификатов

Ситуация - забирать бэкапы с удалённого сервера по SSH. Из минусов - админ отказался включить авторизацию по сертификатам. Нет проблем.

  • Ставим expect. Например

yum install expect

или

apt-get install expect

  • Создаём такой скриптик
1
2
3
4
5
6
7
8
#!/usr/bin/expect -f
set timeout 100
set PASS "ПАРОЛЬ"
set USER "ЛОГИН"
spawn rsync -av --progress --partial --backup --backup-dir=/home/backup/alt/ $USER@СЕРВЕР:/home/backup-user/backups/ /home/backup/rt
expect "password: "
send "$PASS\r"
expect eof

В данном случае работаем по SSH, подставляем пароль и делаем копию. Если чего-то удалённо нет (например, админ удалил старые файлы или решил сделать прощальный привет перед увольнением), то имеющееся будет отправлено в alt. То, есть есть - в rt (real time)