每晚汇总各机器的操作日志,同步到主服务器进行日志分析。
二、基础知识
rsync 分为服务器端、客户端,服务器端搭建比客户端辛苦一些(也是很简单)。
rsync 服务器是指以 deamon 方式运行 rsync 服务的服务器,需要打开 rsync deamon 和启动 xinetd 服务。默认端口873。
rsync 客户端是发起 rsync 连接的服务器,安装rsync即可。
rsync 客户端发起连接后,rsync 服务器会检查 rsync 客户端提交 rsync 服务器内建的户名和密码是否正确,如果通过认证检测,则开始文件传输,传输的过程是按要求先比对文件的大小、属性、权限、MD5值等信息,如果两端文件信息不一致,则按要求同步文件的区别块。
三、安装
大多数Linux操作系统都自带 rsync 服务,如果想升级可以使用 yum 等,也可以使用源码包自己安装。
wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz
tar -xzf rsync-3.1.2.tar.gz
cd rsync-3.1.2
./configure --prefix=/usr/local/rsyncd
make && make install
四、服务端配置
rsync 配置文件安装完有时候并不存在,不必惊慌,可以手动创建。创建配置文件目录及文件如下:
| - /etc/rsyncd(文件夹)
| - rsyncd.conf(rsync 服务器的配置文件)
| - rsyncd.secrets(用户密码文件,客户端使用其中的账号密码访问,需要 600 权限)
| - rsyncd.motd(自定义用户登录后显示的服务器信息,即 messageoftoday,)
mkdir /etc/rsyncd
touch /etc/rsyncd/rsyncd.conf
touch /etc/rsyncd/rsyncd.secrets
touch /etc/rsyncd/rsyncd.motd
chmod 600 /etc/rsyncd/rsyncd.secrets
/etc/rsyncd/rsyncd.conf
pid file = /var/run/rsyncd.pid #进程 pid 文件所在位置
port = 873 #指定监听端口,默认是873,可以自己指定
address = 192.168.1.171 #服务器监听的IP地址,可省略
uid = root #守护进程所属的uid,默认是nobody,可能会碰到文件或目录权限问题,此处偷懒用的 root
gid = root #守护进程的gid
#chroot,即改变程序执行时所参考的根目录位置,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中
#这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。另外对符号链接文件,将会排除在外
#也就是说,你在 rsync服务器上,如果有符号链接,你在备份服务器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的内容
use chroot = yes
read only = no #只读选择,只让客户端从服务器上读取文件
write only = yes #只写选择,只让客户端到服务器上写入
#允许访问的IP,可以指定单个IP,也可以指定整个网段,能提高安全性。格式是 ip 与 ip 之间、ip 和网段之间、网段和网段之间要用空格隔开;
hosts allow = 192.168.1.0/255.255.255.0 10.0.1.0/255.255.255.0
max connections = 5 #客户端最多连接数
#当用户登录时会看到这个信息。比如显示当前时间、公告等
motd file = /etc/rsyncd/rsyncd.motd
log file = /var/log/rsync.log #rsync 服务器的日志;
transfer logging = yes #记录传输文件的日志
log format = %t %a %m %f %b #日志格式
syslog facility = local3 #日志级别
#通过该选项可以覆盖客户指定的IP超时时间。可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。
timeout = 300
#模块定义
#主要是定义服务器哪个目录要被同步。
#每个模块都要以[name]形式。这个名字就是在 rsync 客户端看到的名字。
#但是服务器真正同步的数据是通过 path 指定的。可以依次创建多个模块。
#每个模块要指定认证用户、密码文件,但排除并不是必须的。
[ logs ] #模块名,以下配置都属于此模块
path = /var/log #文件目录所在位置
list = no #当查看服务器上提供了哪些目录时是否列出来,no比较安全
ignore errors #忽略I/O错误
#指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系,是 rsyncd.secrets 中的用户名!
#如果"auth users"被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份。
#这里使用的 challenge/response 认证协议。
#用户的名和密码以明文方式存放在"secrets file"选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。
auth users = linuxidc
secrets file = /etc/rsyncd/rsyncd.secrets #密码文件
exclude = error_log httpd.pid #忽略的文件或目录
comment this is my log #本模块注释,可选
/etc/rsyncd/rsyncd.secrets 密码文件,用户名称与密码以冒号分隔,多个用户名和密码可以多行
linuxidc:239fjdalk@893246dasaATDFBSad
zhangab:669fjbalk@8sadf$3246dasaATDFBSaf
/etc/rsyncd/rsyncd.motd 登录公告
++++++++++++++++++++++++++++++
+ John ABC rsync 2008-2099 +
++++++++++++++++++++++++++++++
五、启动服务端
启动服务端有两种方式。
1.直接使用 --daemon 参数
/usr/local/rsync/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
2.xinet方式
1).修改 /etc/services,加入以下内容,如果已经有可以不加,如果端口改了,需要改掉 873 端口为指定端口
rsync 873/tcp # rsync
rsync 873/udp # rsync
2).修改 /etc/xinetd.d/rsync,主要是要打开rsync這個daemon, 一旦有rsync client要连接時, xinetd会把它转介給 rsyncd(port 873)。