系统版本
CentOS release 6.9 (Final)
2.6.32-696.el6.x86_64 x86_64

rsync 服务端IP:172.16.1.41 计算机名:backup
rsync客户端IP:172.16.1.31 计算机名:nfs

服务器配置:

[root@backup scripts]# cat backup_server.sh 
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

#rsyncd.conf file 配置rsync的服务端文件
cat >>/etc/rsyncd.conf<<EOF
#rsync_config______________begin
#creat by yuguotianqing  2018-01-15
##rsync.conf start##
uid =rsync #用户远端的命令使用 rsync 访问共享目录
gid =rsync #授权的用户组
use chroot =no #安全相关
max connections =200  #最大连接数
timeout =300 #超时时间
pid file =/var/run/rsyncd.pid#程序进程对应的进程号文件
lock file =/var/run/rsync.lock#锁文件
log file =/var/log/rsyncd.log#日志文件
[backup]#模块名
path =/backup/ #模块设定的路径(提供访问的目录)
ignore errors #忽略错误
read only =false #只读为假(可写)
list =false#不能列表
hosts allow =172.16.1.0/24 #允许连接的 ip 段
#host deny =0.0.0.0/32#拒绝连接的 ip 段
auth users =rsync_backup#授权连接的用户
secrets file =/etc/rsync.password#虚拟账号对应的密码文件
#rsync_config_____________end
EOF

#useradd rsync 创建虚拟用户和虚拟用户组
useradd rsync -s /sbin/nologin -M  &&\   #不需要用命令-s  不需要家目录-M
tail -1 /etc/passwd &&\   #查询是否创建

#daemon  启动daemon(进程)服务
rsync --daemon  &&\   #启动进程服务
ps -ef |grep rsync|grep -v grep &&\  #查询是否开启
lsof -i :873 &&\  #查看端口

#backup establish  创建backup目录
mkdir -p /backup &&\  
chown rsync.rsync /backup/ &&\ #backup目录需要对应配置文件的uid和gid的属主和属组主,如果不对应的话客户端无法把文件推送过来
ls -ld /backup  &&\  #查看目录的属主和属组主必须为 rsync

#rsync password file 创建虚拟账号的密码文件
echo "rsync_backup:oldboy" >/etc/rsync.password &&\ #对应rsync_backup账号:oldboy为密码
chmod 600 /etc/rsync.password &&\ #因为oldboy是可读的字节但是文件类型是其他用户是可读的,这样子就不安全,所以需要修改文件权限,如果不修改权限也无法推送文件。
ls -l /etc/rsync.password &&\ #查看权限

#local daemon
echo "/usr/bin/rsync --daemon" >>/etc/rc.local &&\ #加入开机自启动的配置文件里面去
tail -5 /etc/rc.local  #查看配置文件是否存在/usr/bin/rsync --daemon

下面是客户端配置:

[root@nfs scripts]# cat rsync_client.sh 
#!/bin/bash
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

#rsync password file
echo "oldboy" >/etc/rsync.password &&\  #在/etc/rsync.password留下密码就可以了密码为:oldboy
chmod 600 /etc/rsync.password &&\  #因为有密码考虑到安全问题所以权限也修改成600
ls -l /etc/rsync.password &&\
mkdir -p /backup  #创建一个backup目录

下面是推送测试:

root@nfs01 backup]# touch stu{01..100} #创建测试文件
[root@nfs01 backup]# ls
stu001 stu011 stu021 stu031 stu041 stu051 stu061 stu071 stu081 stu091
stu002 stu012 stu022 stu032 stu042 stu052 stu062 stu072 stu082 stu092
stu003 stu013 stu023 stu033 stu043 stu053 stu063 stu073 stu083 stu093
stu004 stu014 stu024 stu034 stu044 stu054 stu064 stu074 stu084 stu094
stu005 stu015 stu025 stu035 stu045 stu055 stu065 stu075 stu085 stu095
stu006 stu016 stu026 stu036 stu046 stu056 stu066 stu076 stu086 stu096
stu007 stu017 stu027 stu037 stu047 stu057 stu067 stu077 stu087 stu097
stu008 stu018 stu028 stu038 stu048 stu058 stu068 stu078 stu088 stu098
stu009 stu019 stu029 stu039 stu049 stu059 stu069 stu079 stu089 stu099
stu010 stu020 stu030 stu040 stu050 stu060 stu070 stu080 stu090 stu100

方法1:
[root@nfs01 backup]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup/ --password-file=/etc/rsync.password

rsync -avz /backup/ 推送本地backup/目录下的文件到172.16.1.41backup服务器上rsync_backup用户

::backup这里对应的是backup服务器端rsync配置文件的模块名称[backup]

--password-file=/etc/rsync.password 设置备份服务器端rsync虚拟用户的密码,--password-file等于这个文件里面的是密码/etc/rsync.password

出现下图表示推送成功:
rsync服务端和客户端配置自动化配置脚本