Rsync的服务端搭建

rsync相比较scp而言,功能更为强大,高效,通过sersync或者inotify实时监测源目录和文件,从而支持多文件,多目录的实时同步,或者,通过定时任务crontab 定时的增量备份重要目录和文件。

那么,这个服务端是什么意思呢?可以简单的理解为类似ftp,samba这样的服务,把客户端要同步的文件或者目录同步到服务器上,服务端指定存放同步的文件或者目录的位置,象ftp一样,存储同步备份的文件。

环境配置:

192.168.0.16   客户端,安装rsync,httpd服务并开启该服务

192.168.0.17   服务端,安装rsync,并配置rsync为服务

(rysnc目前由https://rsync.samba.org 提供技术支持,也就是Samba管理该项目,有源码包可供编译安装,建议无特殊需求的yum安装吧,毕竟仅仅是个工具。

搭建步骤:

192.168.0.17 的配置:

1.安装rsync,如果是最小化安装,通常没有rsync,需要yum安装, yum install rsync -y

2. 编辑 /etc/sysconfig/rsyncd ,内容如下:

OPTIONS="/etc/rsyncd.conf"

3.编辑/etc/rsyncd.conf,内容如下:

uid = root
gid = root
port = 873
use chroot = yes
max connections = 4
hosts allow = *
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd/rsyncd.log
lock file =/var/run/rsync.lock
exclude = lost+found/
transfer logging = yes
timeout = 900
ignore nonreadable = yes
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2

[httpd_back]
       path = /mnt/httpd_back
       comment = ftp export area
        read only = no
        auth users = rsync
        secrets file = /etc/rsyncd.passwd
[etc_back]
path = /mnt/etc_back
       comment = etc export area
        read only = no
        auth users = rsync
        secrets file = /etc/rsyncd.passwd

4. 日志文件的生成

mkdir -p /var/log/rsyncd/  && touch /var/log/rsyncd/rsyncd.log && chmod 755 /var/log/rsyncd/rsyncd.log

5.根据  /etc/rsyncd.conf这个配置文件,生成账号和密码保存文件

vim /etc/rsyncd.passwd    #文件内容如下:

rsync:你要设定的密码,客户端使用的。

6. 设定账号密码文件权限为600

chmod 600 /etc/rsyncd.passwd

7.根据 /etc/rsyncd.conf 这个配置文件,生成存放同步及备份文件或目录的目录

mkdir -p /mnt/httpd_back/

mkdir -p /mnt/etc_back/

8.启动服务并加入开机启动,查看服务状态

systemctl enable rsyncd && systemctl start rsyncd && systemctl status rsyncd

绿色的running表示服务以及配置文件都正常

9.netstat 查看服务启动的状态,最后确认。

netstat -antup | grep rsyncd #输出如下:

[root@centos7 httpd_back]# netstat -antup | grep rsync
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      11640/rsync         
tcp6       0      0 :::873                  :::*                    LISTEN      11640/rsync


192.168.0.16的配置:

yum install rsync httpd -y && systemctl enable httpd && systemctl start httpd &&echo "192.168.0.16" >/var/www/html/index.html

vim /etc/rsync.passwd

密码,和服务器端设定的密码一致,只写密码什么都不写

chmod 600 /etc/rsync.passwd

rsync -avz /var/log/httpd/  rsync@192.168.0.17::httpd_back --password-file=/etc/rsync.passwd


这时候,在192.168.0.17的 /mnt/httpd_back目录内应该可以看到192.168.0.16的httpd服务的日志了

rsync -avz /etc/  rsync@192.168.0.17::httpd_back --password-file=/etc/rsync.passwd

这时候,在192.168.0.17的 /mnt/httpd_back目录内应该可以看到192.168.0.16的etc目录了

rsync -avz /etc  rsync@192.168.0.17::etc_back --password-file=/etc/rsync.passwd

#注意,这条命令 rsync -avz /etc 和 rsync -avz /etc/  效果是不一样的,第一个是带目录,第二个是不带目录。切记!!!

这时候,在192.168.0.17的 /mnt/etc_back目录内应该可以看到192.168.0.16的etc目录了。

总结来了:

服务端的配置文件内可以象Samba一样写入多个【】这样的模块,从而在客户端推送文件或者文件夹时灵活的保存在不同目录,指定模块名称即可。

hosts allow  这个选项可以指定网段或者IP从而保护服务器(谁都可以来,是不安全的,不是推荐的)

rsync -avz后面接的目录带  / 和不带  /  是不一样的,一定要搞清楚。(最好是动手实践,记清楚)

rysncd.conf 这个文件是在centos,redhat7后才有的模板文件,如果是6,可能需要自己创建。

保存账号和密码的文件全部是需要600或者700权限,如果权限不对,会报错的。(rsync强制保护措施)

日志文件的权限755勉强可以接受,因为只是日志而已,该日志比较详细,记录了每个事件,如果有错误,建议第一时间查看日志。

在本例中,在 /etc/rsyncd.conf文件内定义了两个模块,当然,也可以定义更多的模块,但,定义的path需要创建,客户端仅仅调用模块名称 ,也就是 [] 内的名称。