服务端设置

/etc/rsyncd.conf 设置

#rsync.conf--------------------------------------------start

##这个地方被坑过 报错信息 uid rsync error 类似的 ##原因是把##注释加到了uid=rsync后面,这里定义的是系统用户,以后的配置文##注释必须换行加 uid = rsync
gid = rsync
use chroot = no max connections = 200 timeout = 300

** ##这条新版本必加的,否则报错 看下面常见错误** fake super = yes pid file = /var/run/rsyncd.pid ##lock file lock file = /var/run/rsync.lock
log file = /var/log/rysncd.log

[backup]

##即接收文件的目录,区分清楚末尾 / 的问题 path = /backup ignore errors read only = false list = false ##生产环境一般使用内网IP做rsync **hosts allow = 172.16.1.0/24 **

为了安全把这个注释掉,只添加允许

##hosts deny = 0.0.0.0/32

##这个就是客户端访问的用户名,即 rsync_backup@IP 这个名 auth users = rsync_backup

##每个类似于[backup]这样的模块都有一个密码文件,区分于后期设立多模块,且路径可以自定义 secrets file = /etc/rsync.password #rsyncd.conf--------------------------------------------------end

添加系统用户与rsyncd.conf uid gid 保持一致

useradd -s /sbin/nologin -M rsync

添加密码文件且修改权限为600

这个地方有一次部署的时间忘记了,导致脚本不好用以及重启机器

卡在a stop job is running for sysv 很长时间

echo "rsync_backup:123" >> /etc/rsync.password chmod 600 /rsync.password

创建接收文件目录并修改所有者和所有组

mkdir -p /backup chown rsync.rsync /backup

客户端配置

创建密码文件 且写入密码 并修改权限

注意这里创建密码文件主要是用于脚本非交互传输,如果不需要用脚本,可以不创建这个文件,文件名也可以任意,主要是用说 --password-file= 指定而已

echo "123" >> /etc/rsync.password chmod 600 /etc/rsync.password

测试

1.确认服务端端口打开,默认873 用nmap telnet 等测试, 如果不正常,大概率是防火墙的问题 2.命令 rsync -avz /backup/testfile rsync_backup@172.16.1.33::backup 注意daemon 方式用:: 两个冒号,shell模式用: 一个冒号

这条命令很重要,写脚本的时候非交互使用密码文件

**rsync -avz /backup/testfile rsync_backup@172.16.1.33::backup --password-file=/etc/rsync.password **

常见错误

1.uid gid error : 用户名不对,配置文件写错(我就是后面跟了##注释,被坑好久) 2.配置文件里写的文件名好几个,一定检查配置文件内容与 实际创建的文件 名一致 3.rsync: chgrp ".hosts.G6sZha" (in backup) failed: Operation not permitted (1) 这个错误就是因为没有加 fake super = yes