服务端设置
/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