rsync 服务器配置过程
rsync的原理和相关算法不赘述,资料很多
1、准备两台机器并确保都已经安装rsync
a机器:192.168.1.150 ,用作客户端测试 b机器:192.168.1.151用作server端
先介绍个命令,lsof -i :873 检查rsyn服务是否启动,rsync作为守护进程运行时会默认监听873端口
为了试验顺利关闭iptables 和selinux
2、在b机以守护进程方式启动作为server端
有两种方式启动服务,一个是直接rsync --daemon,一个是通过xinetd 启动,如果要通过xinetd启动的话,需要先修改配置文件/etc/xinetd.d/rsync
如下所示:
service rsync
{
disable = no #这里原来是yes 改为no,只需修改这一行即可
flags = IPv6
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
2、创建/etc/rsyncd.conf文件,系统默认没有这个文件,此文件是rsync作为服务端使用的主要配置文件
内容如下:
uid = nobody
gid = nobody
use chroot = yes #这里使用yes或者no都能正确运行,具体差别可去官网查阅或者google
max connections = 4
pid file = /var/run/rsyncd.pid #自行指定
lock file = /var/run/rsync.lock #自行指定
log file = /var/log/rsyncd.log # 自行指定,这三个文件路径和名字可以随便定
[backup]
path = /data/backup/ #server端用来接收数据的实际路径,注意连接时使用的是上面中括号中的名字backup
read only = true #这里可以也可以改为false 最好是true,更安全
list = false
hosts allow = 192.168.1.0/24 #允许连接的ip范围
auth users = test #允许连接的用户名
secrets file = /etc/rsyncd.password #验证用的用户名和密码,格式为test:test, 路径和名字可以自定义
然后写入用户名密码 echo "test:test" >/etc/rsyncd.password 并设定权限 chmod 600 /etc/rsyncd.password
修改hosts文件,vi /etc/hosts,增加一条192.168.1.150 host01.argb.com,我测试时如果没有这个设置会报一下错误:
name lookup failed for 192.168.1.150: Name or service not known
connect from UNKNOWN (192.168.1.150)
应该是因为内网没有dns服务器的原因。
至此服务器端设置基本完成,启动rsync服务: rsync --daemon
注意:我看有些配置示例上有 ignore errors 这条,但是我实际验证时日志显示这句配置不合法:
params.c:Parameter() - Ignoring badly formed line in configuration file: ignore errors
不知是不是版本问题。
3、进行client端设置
客户端设置很简单,只要配置一个密码文件即可,echo "test">/etc/rsyncd.password
修改文件权限 chmod 600 /etc/rsyncd.password
配置完成
ok,连接测试
rsync -vzrtopg --progress /home/data/test test@192.168.1.151::backup --password-file=/etc/rsyncd.password
done!
rsync可以跟 inotify实现数据的实时备份。