实验节点如下:
源节点:192.168.0.111
备份节点:192.168.0.112
------------------------------以下部分在两个节点上执行
1、防火墙开放873端口(两个节点)
# /sbin/iptables -I INPUT -p tcp --dport 873 -j ACCEPT
# /etc/rc.d/init.d/iptables save
# service iptables restart
2、关闭selinux(两个节点)
# vi /etc/selinux/config
修改如下内容:
SELINUX=disabled
# setenforce 0
3、建立所需目录,上传软件到soft下(两个节点)
# 在192.168.0.111上 创建目录 mkdir /data
# 在192.168.0.112上 创建目录 mkdir /test
安装相关依赖包(两个节点)
# yum -y install gcc gcc-c++ make perl wget rsync
------------------------------以下在源节点上配置
1、建立配置文件(源节点)
# vi /etc/rsync.conf
添加如下内容:
#/etc/rsyncd.conf
#pid文件的存放位置
pid file = /var/run/rsyncd.pid
#日志文件位置,启动rsync后自动产生这个文件,无需提前创建
log file = /var/log/rsyncd.log
#支持max connections参数的锁文件
lock file=/var/run/rsyncd.lock
#用户认证配置文件,里面保存用户名称和密码
secrets file = /etc/rsyncd.pw
#rsync启动时欢迎信息页面文件位置
motd file = /etc/rsyncd.motd
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
#自定义名称
[data]
#设置需要同步的目录
path = /data/
#模块名称与[data]自定义名称相同
comment = data
指定/data目录下不需要同步的目录:exclude = dd,aa
#默认端口
port = 873
#设置rsync运行ID号或账户名称,默认为nobody
uid = nobody
#设置rsync运行GID号或账户名称,默认为nobody
gid = nobody
#设置超时时间
timeout = 600
#最大连接数
max connections = 200
#默认为true,修改为no,增加对目录文件软连接的备份
use chroot = no
#设置rsync服务端文件为只读
read only = yes
#不显示rsync服务端资源列表
list = no
#允许进行数据同步的备份节点IP地址
hosts allow = 192.168.0.112
#设置拒绝所有(除hosts allow定义的主机外)
hosts deny = *
2、建立密码认证文件(源节点)
# vi /etc/rsyncd.pw
添加以下内容:
#格式,用户名:密码,可以设置多个,每行一个用户名:密码
tom:pass
jerry:111
3、设置权限(源节点)
# chmod 600 /etc/rsync.conf
# chmod 600 /etc/rsyncd.pw
4、配置rsyncd.motd文件,开始传送的时候会显示(源节点)
# vi /etc/rsyncd.motd
输入以下内容:
###############################
# #
# hello,welcome to everyone #
# #
###############################
5、启动rsync服务(源节点)
rsync --daemon
出现错误“could not found '/etc/rsyncd.conf'”,坏了启动不起来,想了下前面明明有手动配置这个文件啊,于是输入“ find / -type f -name "rsyncd.conf",还是一样的错误提示,切换到/etc下,cd /etc,再输入ls,看了下前面保存的配置文件是"rsync.conf",奇怪了,明明配置的是rsync.conf文件,启动rsync服务怎么会提示找不到rsyncd.conf,想了想,肯定是手动写的配置文件有错误,输入:cat rsync.conf,查看编写的配置文件内容,搞明白了,问题原来是写配置文件时里面所有的“rsync”都写成了"rsyncd或rsyncd.*",现在再次手动一个一个改太过麻烦,错误提示不是找不到"rsyncd.conf"吗,嘿嘿,我想了个怪招,直接把/etc/rsync.conf重命名成了"rsyncd.conf",重新再启动rsync服务,哈哈,启动成功,为了确保启动成功查了下是否已经监听873端口,
[root@zkq data]# netstat -antulp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 975/sshd
tcp 0 0 192.168.0.111:873 0.0.0.0:* LISTEN 1671/rsync
tcp 0 52 192.168.0.111:22 192.168.0.200:62890 ESTABLISHED 1008/sshd
tcp 0 0 :::22 :::* LISTEN 975/sshd
6、设置开机启动(源节点)
# echo "/usr/bin/rsync --daemon">>/etc/rc.d/rc.local
—————————————以下在备份节点执行————————————
1、安装rsync(前面已安装了,这里不再安装)
2、rsync -avH tom@192.168.0.111::data /test 回车
###############################
# #
# hello,welcome to everyone #
# #
###############################
Password:
输入密码后就开始同步了,可是同步到最后还是有错误
single
smartd
snmpd
snmptrapd
sshd
svnserve
sysstat
udev-post
{seq
lost+found/
"rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1505) [generator=3.0.6]”
根据错误提示看来是共享目录的权限问题,解决方法:
检查服务器端的目录(备份目录)是否存在,并检查其权限。创建目录并修正权限可解决问题。
在源节点上查看目录是存在的,再看共享目录里所有子目录和文件的权限,原来是有些文件没有给其它用户可读可执行权限,为了不再出现同样的问题,所以给共享目录下的所有子目录或文件赋予其它用户的可读可执行权限。
再次rsync -avH tom@192.168.0.111::data /test回车,输入密码后,成功了,再没有任何错误:
restorecond
rngd
rsyslog
sandbox
saslauthd
seq
single
smartd
snmpd
snmptrapd
sshd
svnserve
sysstat
udev-post
{seq
lost+found/
sent 1048 bytes received 66532 bytes 5005.93 bytes/sec
total size is 170761 speedup is 2.53