2.3备份服务器-rsync守护进程(daemon)数据传输

1.部署环境

操作系统:
  CentOS 6.10
位数:
  x86_64
内核:
  2.6.32-754.el6.x86_64
rsync版本:
  3.0.6
查看rsync是否安装:
  rpm -qa rsync --如没有采用yum安装:yum install rsync -y

2.daemon模式搭建
2.1创建配置文件

配置文件默认不存在
  vim /etc/rsyncd.conf
# GLOBAL OPTIONS,全局配置
  uid = rsync   #进程用户:远端的命令使用rsync访问共享目录
  gid = rsync   #进程用户组
  use chroot = no  #安全相关
  max connections = 20   #最大连接数
  timeout = 300  #超时时间(单位/秒)
  pid file = /var/run/rsyncd.pid  #进程对应的进程号文件
  lock file = /var/run/rsync.lock  #锁文件
  log file = /var/log/rsyncd.log   #日志文件


# MODULE OPTIONS,模块配置
  [backup]   #模块名称
  path = /backup  #服务器提供访问的目录
  ignore errors  #忽略错误
  read only = false  #可读
  list = false  #不能列表(ls)
  hosts allow = 192.168.47.0/24  #允许的网段
  # hosts deny = 0.0.0.0/32   #拒绝的网段,二选一
  auth users = rsync_backup  #独立于系统之外的虚拟用户
  secrets file = /etc/rsync.password  #虚拟用户对用的密码
2.3备份服务器-rsync守护进程(daemon)数据传输
rsync配置文件可通过:https://download.****.net/download/cen50958/11114985 下载

2.2添加rsync用户

创建系统虚拟用户,不需要登录,不需要建家目录
  useradd rsync -s /sbin/nologin -M


检查:
  [[email protected] ~]# id rsync
   uid=501(rsync) gid=501(rsync) groups=501(rsync)
  [[email protected] ~]# tail -1 /etc/passwd
   rsync:X:501:501::/home/rsync:/sbin/nologin
2.3备份服务器-rsync守护进程(daemon)数据传输

2.3启动服务

rsync --daemon
检查:
  [[email protected] ~]# ps -ef|grep rsync|grep -v grep
    root 9837 1 0 21:14 ? 00:00:00 rsync --daemon
2.3备份服务器-rsync守护进程(daemon)数据传输
查看端口:
  lsof -i :873
2.3备份服务器-rsync守护进程(daemon)数据传输
  netstat -ntlp|grep 873
2.3备份服务器-rsync守护进程(daemon)数据传输

2.4创建backup目录

mkdir /backup
chown rsync.rsync /backup/ -->设置属主
2.3备份服务器-rsync守护进程(daemon)数据传输

2.5创建密码文件

文件格式:用户名:密码
  vim /etc/rsync.password
或: echo “rsync_backup:123456” >>/etc/rsync.password
2.3备份服务器-rsync守护进程(daemon)数据传输
由于密码明文,且其他用户可读,则修改权限为600
  chmod 600 /etc/rsync.password
  ls /etc/rsync.password -l
2.3备份服务器-rsync守护进程(daemon)数据传输

2.6加入开机自启动

echo “/usr/bin/rsync --daemon” >>/etc/rc.local
检查:
2.3备份服务器-rsync守护进程(daemon)数据传输

2.7 客户端操作
  • 查看rsync是否安装:
      rpm -qa rsync --如没有采用yum安装:yum install rsync -y
  • 设置密码文件
    echo “123456” >/etc/rsync.password
  • 修改密码文件权限
    chmod 600 /etc/rsync.password
    2.3备份服务器-rsync守护进程(daemon)数据传输
  • 推送
    法一:
    rsync -avz /root/data [email protected]::backup --password-file=/etc/rsync.password
    解析:
      rsync --命令
      -avz --名称参数
      /root/data --需要推送的目录,会将data整个目录一起推送
    2.3备份服务器-rsync守护进程(daemon)数据传输
    区别:/root/data/ 会将data下面的内容推送
    2.3备份服务器-rsync守护进程(daemon)数据传输
    rsync_backup 虚拟用户
    192.168.47.51 主机地址
    ::backup 服务端配置的模块名
    –password-file=/etc/rsync.password 客户端密码文件


    法二:
    rsync -avz /root/data/ rsync://[email protected]:873/backup --password-file=/etc/rsync.password
    解析:
      rsync --命令
      -avz --名称参数
      /root/data --需要推送的目录,会将data整个目录一起推送
      rsync:// --rsync协议
      rsync_backup --虚拟用户
      192.168.47.51 --主机地址
      :873 --端口地址
      /backup --目录,只能模块下对应的目录路径
      --password-file=/etc/rsync.password --客户端密码文件

  • 拉取
    法一:
    rsync -avz [email protected]::backup /root/backup/ --password-file=/etc/rsync.password
    法二:
    rsync -avzp rsync://[email protected]:873/backup/ /root/backup --password-file=/etc/rsync.password
    2.3备份服务器-rsync守护进程(daemon)数据传输

  • 排除同步(客户端排除)
    排除a目录:
    rsync -avzp --exclude=a /root/data/ rsync://[email protected]:873/backup/ --password-file=/etc/rsync.password
    排除a,b,c目录:
    rsync -avzp --exclude={a,b,c} /root/data/ rsync://[email protected]:873/backup/ --password-file=/etc/rsync.password
    无差异同步(谨慎使用)
    rsync -avzp --delete /root/data/ rsync://[email protected]:873/backup/ --password-file=/etc/rsync.password
2.8 结束服务

pkill rsync

检查:
  [[email protected] ~]# ps -ef|grep rsync
  [[email protected] ~]# netstat -ntlp|grep 873

3.配置文件参数详解
参数 说明 默认值
address 指定的服务器运行的 IP 地址 本地所有IP
port 端口号,默认值:873 873
motd file 指定一个消息文件,当客户连接服务器时该文件的内容显示给客户
pid file pid文件
log file 守护进程日志文件
syslog facility rsync 发送日志消息给 syslog 时的消息级别 daemon
socket options 指定自定义 TCP 选项
path 指定当前模块在 rsync 服务器上的同步路径,该参数是必须指定的
comment 给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户
use chroot 安全相关 true
uid #进程用户:远端的命令使用rsync访问共享目录 nobody
gid 进程用户组 nobody
max connections 最大连接数 0(没有限制)
lock file 锁文件 /var/run/syncd.lock
list 列表(ls) true
read only 指定是否允许客户上传文件 true
write only 指定是否允许客户下载文件 false
ignore errors 指定 在 rsync 服务器上运行 delete 操作时是否忽略 I/O 错误 true
ignore nonreadable 指定 rysnc 服务器完全忽略那些用户没有访问权限的文件 false
timeout 超时时间 0(未限制)
dont compress 用来指定那些在传输之前不进行压缩处理的文件 *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
exclude 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 exclude 列表中
exclude from 指定一个包含 exclude 规则定义的文件名,服务器从该文件中读取exclude 列表定义
include 指定多个由空格隔开的多个文件或目录(相对路径),并将其添加到 include 列表中
include from 指定一个包含 include 规则定义的文件名,服务器从该文件中读取 include 列表定义
auth users 指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块 (匿名方式)
secrets file 指定一个 rsync 认证口令文件空
strict modes 指定是否监测口令文件的权限 true
hosts allow 指定哪些主机客户允许连接该模块
单个IP地址。例如:192.168.0.1
整个网段。例如:192.168.0.0/24192.168.0.0/255.255.255.0
可解析的单个主机名。例如:centos,centos.smartraining.cn
域内的所有主机。例如:.smartraining.cn
"
"则表示所有。
多个列表项要用空格间隔,例如:192.168.1.1 192.168.1.2
*
hosts deny 指定哪些主机客户不允许连接该模块
transfer logging 使 rsync 服务器将传输操作记录到传输日志文件 false
log format 指定传输日志文件的字段
%a - 远程IP地址
%h - 远程主机名
%l - 文件长度字符数
%p - 该次 rsync 会话的 PID
%o - 操作类型:”send” 或 “recv”
%f - 文件名
%P - 模块路径
%m - 模块名
%t - 当前时间
%u - 认证的用户名(匿名时是 null)
%b - 实际传输的字节数
%c - 当发送文件时,记录该文件的校验码
%o %h [%a] %m (%u) %f %l
4.rsync优缺点
  • 优点:
    增量备份,支持socket(daemon),集中备份(支持推拉,都是以客户端为参照物)
    远程SHELL通道模式还可以加密(SSH传输),socket(daemon)需要加密传输,可以利用v*n服务或ipsec服务

  • 缺点:
    大量小文件同步的时候,比对时间较长,有时候,rsync进程可能会停止
    同步大文件,10G这样的大文件有时也会问题,中断。未完整同步前,是隐藏文件,可以通过续传等参数实现传输
    一次性远程拷贝可以用scp