CentOS环境下rsync的配置和使用


=Start=

缘由:

需要给其它组的同事提供审计日志的安全存储功能,安全存储一方面是保证日志的安全和不可篡改,另一方面就是保证日志的不可丢失。保证日志的安全和不可篡改咱们以后再说,这里主要说一下如何保证日志的不可丢失的方法——异地备份,主要用到的是rsync在不同机器之间进行审计日志的异地备份存储,以防止在一台机器宕掉的情况下审计日志不丢失。

正文:

参考解答:
什么是rsync

rsync(remote synchronize)——是一个Linux下用于实现远程同步功能的软件,可通过LAN/WAN快速同步多台主机间的文件。在同步文件时,可以保持源文件的权限、时间、软硬链接等附加信息。它使用所谓的“Rsync演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快,常被用于在内网进行源代码的分发及同步更新 & 数据备份工具。可以参考下面几篇文章了解一下什么是rsync以及它有哪些特性:

rsync的安装
rpm -qa | grep rsync
yum info rsync
sudo yum install rsync
rsync的配置

可能我们通过上面的方式安装好rsync后,并没有发现它的配置文件,以及启动程序,因为每个管理员对rsync的使用可能不一样,所以一般的发行版只是安装好软件就完事了,让管理员来根据自己的用途和方向来自己配置rsync服务。因为rsync的应用范围比较广,能在同一台主机进行备份工作,还能在不同主机之间进行工作。在不同主机之间的进行备份,是必须架设rsync服务器的。

sudo mkdir -p /etc/rsyncd
sudo touch /etc/rsyncd/rsyncd.conf      #主配置文件
sudo touch /etc/rsyncd/rsyncd.secrets   #用户名密码文件,一组用户一行,用户名和密码使用 : 分割
sudo touch /etc/rsyncd/rsyncd.motd      #非必须,连接上rsyncd显示的欢迎信息,此文件可不创建
sudo chown root:root /etc/rsyncd/rsyncd.secrets #安全起见将属主设置为root
sudo chmod 0600 /etc/rsyncd/rsyncd.secrets #安全起见将权限设置为600

一个rsyncd.conf文件内容模板:

################################################################################
#                      ******进程相关的全局配置******
################################################################################
# = 后面的值可根据自己的实际情况更改
#    pid file 守护进程pid文件
#    port 守护进程监听端口,可更改,由xinetd启动rsyncd时忽略此参数
#    address 守护进程监听ip,由xinetd启动rsyncd时忽略此参数
pid file = /var/run/rsyncd.pid
port = 873
address = 10.12.74.122
# rsyncd 守护进程运行系统用户全局配置,也可在具体的块中独立配置
uid = root
gid = root
# 允许 chroot,提升安全性,客户端连接模块,首先chroot到模块path参数指定的目录下
# chroot为yes时必须使用root权限,且不能备份path路径外的链接文件
use chroot = yes
# 只读
read only = no
# 只写
write only = no
# 允许访问rsyncd服务的IP,IP段或者单独IP之间使用空格隔开
hosts allow = 10.5.203.190 10.4.0.0/255.255.0.0
# 不允许访问rsyncd服务的IP,*是全部(不涵盖在hosts allow中声明的IP,注意和hosts allow的先后顺序)
hosts deny = *
# 客户端最大连接数
max connections = 5
# 欢迎文件路径,可选的
# motd file = /etc/rsyncd/rsyncd.motd
# 日志相关
#    log file 指定rsync发送消息日志文件,而不是发送给syslog,如果不填这个参数默认发送给syslog
#    transfer logging 是否记录传输文件日志
#    log format 日志文件格式,格式参数请google
#    syslog facility rsync发送消息给syslog时的消息级别,
#    timeout 连接超时时间
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
################################################################################
#                      ******模块配置(多个)******
################################################################################
# 模块名称必须使用[]环绕,比如要访问auditlog,则地址应该是 audit@10.12.74.122::auditlog
[auditlog]
# 模块根目录,必须指定
path = /opt/logs/sec
# 是否允许列出模块里的内容
list = no
# 忽略错误
# ignore errors
# 模块验证用户名称,可使用空格或者逗号隔开多个用户名
auth users = audit
# 模块验证密码文件 可放在全局配置里
secrets file = /etc/rsyncd/rsyncd.secrets
# 注释
comment = This moudle is used to backup auditlog for data team.
# 排除目录,多个之间使用空格隔开
exclude = test1/ test2/

一个rsyncd.secrets文件内容示例:

audit:z_a08_p

一个rsyncd.motd文件内容示例:

################################################################################
#                      ******configed by ixyzero******
################################################################################
rsync的启动

根据实际情况选择rsync服务的启动方式:

  • rsync服务器负载比较高,则使用独立启动模式
    #显式的指定配置文件
    /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
    #假设在使用Putty/Xshell终端操作,保证终端断开进程仍然执行
    nohup /usr/bin/rsync --daemon --config=/etc/rsyncd/rsyncd.conf
  • rsync服务器负责较低,使用xinetd运行方式
    $ sudo vim /etc/xinetd.d/rsync
    ...
            server_args     = --daemon --config=/etc/rsyncd/rsyncd.conf
    ...
     
    # 注意:如果系统没有安装xinetd,需要先安装然后设置一下:
    $ sudo yum intall xinetd
    $ sudo chkconfig rsync on
    $ sudo service xinetd restart
rsync的防火墙设置
# iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
# iptables -L
rsync的(自动)同步
# 传输时自动使用密码文件而不用手动输入,注意密码文件权限必须是600
$ rsync -avzP --delete --password-file=/etc/rsyncd/rsyncd.secrets audit@10.12.74.122::auditlog ~/auditlog
# 参数 a 的意思是保留文件原有权限,用户,用户组,时间且递归的copy包括链接文件,块设备在内的所有文件
# 参数 v 是显示传输信息
# 参数 P 显示传输进度
# 参数 z 是压缩传输内容进行传输
# 假设要保持auditlog模块和本地 ~/auditlog 目录的内容完全一致,需要加上参数 `--delete` ,这样会删除在 ~/auditlog 目录里但是不在auditlog模块里的文件(夹)
# 如果需要rsync自动进行同步,可以将同步使用的rsync命令放入cron定时执行,以起到自动同步的效果;
# 或者可以结合 inotify 和 rsync 以达到近实时同步的效果。
rsync的安全设置
  • 限定可访问的IP;
  • 不允许匿名访问,设置用户口令;
  • 修改监听端口;[可选]
  • 隐藏module信息;
  • 只读设置。
参考链接:

=END=

, ,

《 “CentOS环境下rsync的配置和使用” 》 有 2 条评论

  1. 开发技术 – 数据增量同步
    https://ialloc.org/posts/2018/07/13/delta-encoding/
    `
    差分编码
      diff 和 patch
      Rsync
      RDC
      流式增量
    应用案例
      APK 包增量更新
      zsync
      crsync
      Courgette
      Redis
      Evernote
      Dropbox
      犀牛云盘
      ownCloud
      seafile
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注