rsync(remote synchronous)是类UNIX系统中用来远程镜像备份的一款工具。
软件包名称:rsync
端口号:TCP/UDP873
系统服务名称:
xinetd:主服务,如果需要重启rsync则需要service xinetd restart
rsync:使用chkconfig rsync on 设置开机自动启动
配置文件:/etc/xinetd.d/rsync
以下三个文件需要手动创建,配置文件名称必需一样,存放位置可以自定义
/etc/rsyncd.conf #rsync服务器的主配置文件
/etc/rsyncd.secrets#用户密码文件
/etc/rsyncd.motd #服务器欢迎界面
配置rsync客户端自动同步(ssh模式认证)
1-配置一个不需要密码的SSH密钥登录环境
2-安装rsync:#服务器和客户端都要安装,不需要修改任何配置文件,因为此时只是需要rsync命令
#yum install rsync
#service xinetd restart
#chkconfig xinetd on
3-看看rsync服务器上提供了哪些可用的数据源
#rsync --list-only username@hostip::#“::”代表使用rsync的用户认证方式
#“:”代表使用ssh模式认证
share#模块名称 rsync share#模块注释#采用rsync用户认证时才有
4-同步数据
#rsync -e ssh -avz username@hostip:/PATH/localPATH
rsync服务器认证方式
#修改服务器端的配置文件/etc/xinetd.d/rsync
disable = no#默认是yes,改成no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon #--daemon是让rsync以服务器模式运行
配置文件默认读取位置是/etc目录下,其他位置则需要使用参数指定--config=/etc/rsync/rsyncd.conf
log_on_failure += USERID
#service xinetd restart
#chkconfig rsync on
#chkconfig xinetd on
rsync服务器的配置
rsync服务默认没有配置,需要手动创建(rsyncd.conf,rsyncd.secrets,rsyncd.motd)
#touch /etc/rsyncd.conf
#touch /etc/rsyncd.secrets
#touch /etc/rsyncd.motd
#chmod 600 /etc/rsyncd.secrets #必需是这个权限,而且属主和属组都必需是root
#vi /etc/rsyncd.conf
# 全局定义
# This line is required by the /etc/init.d/rsyncd script
pid file = /var/run/rsyncd.pid# 告诉进程写到 /var/run/rsyncd.pid 文件中
port = 873# 指定运行端口,默认是873,可以自己指定
address = 192.168.99.6#rsync服务器IP
#uid = nobody#默认值
#gid = nobody#默认值
uid = root#服务器传输文件时使用的用户
gid = root#服务器传输文件时使用的用户组
use chroot = yes# 用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限。
另外对符号链接文件,将会排除在外。也就是说,你在rsync服务器上,如果有符号链接,你在备份服务器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的内容
read only = yes# read only 是只读选择,也就是说,不让客户端上传文件到服务器上。还有一个 write only选项
#limit access to private LANs
hosts allow=192.168.99.0/255.255.255.0# 指定单个IP,也可以指定整个网段,能提高安全性,地址之间要用空格隔开
hosts deny=*
max connections = 5#客户端最大连接数
motd file = /etc/rsyncd.motd#自己编辑这个文件,用户登录时会看到这个信息
#This will give you a separate log file#日志选项不是必需的
log file = /var/log/rsync.log#rsync 服务器的日志
transfer logging = yes#传输文件的日志
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
#模块定义
[share]#定义服务器哪个目录要被同步。每个模块都要以[name]形式。这个名字就是在rsync 客户端看到的名字,其实有点象Samba服务器提供的共享名。
而服务器真正同步的数据是通过 path 来指定的。我们可以根据自己的需要,来指定多个模块。每个模块要指定认证用户rhel6 rsync配置,密码文件、但排除并不是必须的
path = /root/sh#需要备份的目录名称
list=yes# list 意思是把rsync 服务器上提供同步数据的目录在服务器上模块是否显示列出来。默认是yes,如果不想列出来,就no
ignore errors# 忽略IO错误
auth users = q1 #auth users 是必须在服务器上存在的真实的系统用户,如果你想用多个用户,那就以,号隔开;比如 auth users = q1 , q2
secrets file = /etc/rsyncd.secrets#密码文件,内容格式:用户名:密码
rsyncd.secrets文件权限对其它用户组是不可读的。如果设置错了,可能rsync不工作
为了安全,你不能把系统用户的密码写在这里。比如你的系统用户 q1 密码是abcdefg ,为了安全,你可以让rsync 中的q1为 123456
comment = rsync share#关于模块的注释,自定义
exclude = t1/ t2/#需要排除不备份的目录,目录之间用空格隔开,不是必需的
rsync服务器和防火墙;
#iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 873 -j ACCEPT
#iptables -L -n 查看一下防火墙是不是打开了 873端口;
rsync 客户端同步数据;
#rsync -avz --delete --password-file=rsync.password username@hostip::模块名称 本地目录
Password: 这里要输入username的密码,是服务器端的rsyncd.secrets中定义的
#touch rsync.password
#chmod 600 rsync.passwod
#echo "123456"> rsync.password
报错信息解析
情况1# rsync -av root@192.168.99.6::share/ ./
rsync: read error: Connection reset by peer (104)#这个是rsync服务找不到配置文件
rsync error: error in rsync protocol data stream (code 12) at io.c(614) [receiver=2.6.8]
情况2# rsync -av root@192.168.99.6::share/ ./
welcome use rsync
Password:
@ERROR: chroot failed#配置文件chroot参数设置问题,或者服务器selinux限制,或者配置文件中的路径不存在
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=2.6.8]
情况3## rsync -av root@192.168.99.6::share/ ./
welcome use rsync
Password:
@ERROR: auth failed on module share#密码验证错误,核对密码文件的内容和属性
rsync error: error starting client-server protocol (code 5) at main.c(1296) [receiver=2.6.8]
让rsync 客户端自动与服务器同步数据;
创建同步脚本和密码文件:
#touch /etc/username.password
#chmod 600 /etc/username.password
#echo "123456" > /etc/username.password
#mkdir /home/username
#vi /etc/rsync.sh
#!/bin/sh
#rsync backup
/usr/bin/rsync -avzP --password-file=/etc/username.password username@hostip::模块名称 /home/username/$(date +'%F')
配置crond
#crontab -e
5923**5/etc/rsync.sh>/etc/rsync.log 2>&1
#每个星期五的晚上23:59分进行数据同步,并将同步信息重定向到rsync.log文件中
#service crond restart