rsyncd

На машине с которой нужно получить бекап (server).

$ sudo yum install -y rsync
$ sudo vim /etc/rsyncd.conf
# /etc/rsyncd: configuration file for rsync daemon mode
# See rsyncd.conf man page for more options.
# configuration example:

uid = nobody
gid = nobody
use chroot = no
max connections = 4
pid file = /var/run/rsyncd.pid
exclude = lost+found/
transfer logging = yes
# timeout = 900
# ignore nonreadable = yes
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[sdata]
   path = /home/lora/_backup/SDATA/
   comment = SDATA imp
   hosts allow = xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy
   secrets file = /etc/rsync.d/rsyncd.secrets
$ sudo mkdir -p /etc/rsync.d
$ sudo cat /etc/rsync.d/rsyncd.secrets
lora:password

На машине с которой будет производиться синхронизация (клиент)

$ sudo yum install -y rsync

$ sudo vim /etc/rsyncd.conf
# Set this if you want to stop rsync daemon with rc.d scripts
pid file = /var/run/rsyncd.pid
motd file = /etc/rsync.d/new_motd
exclude = lost+found/
transfer logging = yes
log file = /var/log/rsyncd.log

# Edit this file before running rsync daemon!!

uid = nobody
gid = nobody
use chroot = no
max connections = 4

dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[sdata]
    path = /home/lora/_backup/SDATA/
    comment = SDATA 
    auth users = lora
    secrets file = /etc/rsync.d/rsyncd.secrets

Firewalld

На клиенте и на сервере открываем порт (873) или разрешаем сервис

$ sudo firewall-cmd --get-active-zones
$ sudo firewall-cmd --zone=public --list-all
$ sudo firewall-cmd --permanent --zone=public --add-service=http
$ sudo firewall-cmd --reload
$ sudo firewall-cmd --list-all
public (active)
   target: default
   icmp-block-inversion: no
   interfaces: enp64s0
   sources:
   services: ssh samba rsyncd
   ports: 5001/tcp
   protocols:
   masquerade: no
   forward-ports:
   source-ports:
   icmp-blocks:
   rich rules:

Включаем сервис и добавляем в автозагрузку

$ sudo systemctl start rsyncd
$ sudo systemctl status rsyncd
$ sudo systemctl enable rsyncd

Проверяем слушается ли порт

$ ss -tul | grep rsync
tcp    LISTEN   0   5    *:rsync     *:* 
tcp    LISTEN   0   5   :::rsync    :::*

на клиенте запускаем скрипт вида

$ vim rsync_backup_sdata.sh

#!/bin/sh
#
rsync -urlogt --password-file=/etc/rsync.d/rsyncd.secrets lora@192.168.0.19::sdata /home/lora/_backup/SDATA/

$ chmod +x rsync_backup_sdata.sh

Настройка SELinux

При попытке синхронизировать в логах появилось сообщение вида:

avc: denied { search } for pid=26577 comm="rsync" name="lora" dev="md124" ino=99 scontext=system_u:system_r:rsync_t:s0 tcontext=unconfined_u:object_r:user_home_dir_t:s0 tclass=dir

Запускаем и следуем рекомендациям

# sealert -a /var/log/audit/audit.log  

# semanage fcontext -a -t rsync_data_t "/home/lora(/.*)?"
# restorecon -Rv /home/lora/

Теперь:

$ ls -Zd
drwx------. lora lora unconfined_u:object_r:rsync_data_t:s0

Пробуем соединиться. Если все нормально ставим на клиенте задание в крон:

$ sudo crontab -e
45 2 * * * /home/lora/bin/rsync_backup_sdata.sh

 

image_pdfimage_print

Leave a Reply

Your email address will not be published. Required fields are marked *