На машине с которой нужно получить бекап (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