Rsync远程数据同步
、
Arsync 服务器客户端
Eth0:192.168.1.1/24eth0:192.168.1.2/24
255.255.255.0255.255.255.0
实验环境:RHEL5.4
Aserver: 192.168.1.1/24
BClinet:192.168..1.2/24
实验要求:
一.在A server搭建rsync服务
二.实现A server的数据远程同步到BClinet上(保持符号链链、硬链接、文件属于、权限、设备以及时间等)并能从客户端上传文件到rsync服务器
实验步骤:
一,在A server搭建rsync服务
1,设定IP
[root@localhost ~]# ifconfig eth0 | grep"inet addr
inet addr:192.168.1.1Bcast:192.168.1.255Mask:255.255.255.0
2.查看本机是否已安装rsync
[root@localhost ~]# rpm -q rsync
rsync-2.6.8-3.1
3建立rsync的配置文件(需要手动建立)
[root@localhost ~]# touch /etc/rsyncd.conf(创建rsyncd.conf,这是rsync服务器的配置文件。)
[root@localhost ~]# touch /etc/rsyncd.secrets (创建rsyncd.secrets ,这是用户密码文件。)
[root@localhost ~]# touch /etc/rsyncd.motd (创建rsyncd.motd,这是rysnc服务器信息))
[root@localhost ~]# chmod 600 /etc/rsyncd.secrets(将rsyncd.secrets这个密码文件的文件属性设为root拥有, 且权限要设为600, 否则无法备份成功!)
二,配置rsync服务
1,全局定义
[root@localhost~]# vim /etc/rsyncd.conf
pid file = /var/run/rsyncd.pid(告诉进程写到 /var/run/rsyncd.pid 文件中;)
port = 873(指定运行端口,默认是873,您可以自己指定;)
address = 192.168.1.1 (指定服务器IP地址)
uid = root (nobody)(服务器端传输文件时,要发哪个用户和用户组来执行,默认是nobody。如果用nobody 用户和用户组,可能遇到权限问题,有些文件从服务器上拉不下来所以用了root 。不过您可以在定义要同步的目录时定义的模块中指定用户来解决权限的问题。)
gid = root (nobody)
use chroot = yes(用chroot,在传输文件之前,服务器守护程序在将chroot 到文件系统中的目录中,这样做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超级用户权限另外对符号链接文件,将会排除在外。也就是说,你在 rsync服务器上,如果有符号链接,你在备份服务器上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同步符号链接的内容;)
read only = yes(read only 是只读选择,也就是说,不让客户端上传文件到服务器上。)
write only=yes(是否允许上传文件到服务器)
hosts allow=192.168.1.1(指定服务器的IP , 在您可以指定单个IP,也可以指定整个网段,能提高安全性。格式是ip 与ip 之间、ip和网段之间、网段和网段之间要用空格隔开;)
max connections = 5 (客户端最多连接数)
motd file = /etc/rsyncd/rsyncd.motd (motd file 是定义服务器信息的,要自己写 rsyncd.motd 文件内容。当用户登录时会看到这个信息。)
log file = /var/log/rsync.log(rsync 服务器的日志)
transfer logging = yes(这是传输文件的日志)
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
2模块定义
[root@localhost~]# vim /etc/rsyncd.conf
pidfile = /var/run/rsyncd.pid
port =873
address= 192.168.1.1
uid =root
gid =root
usechroot = yes
readonly = yes
hostsallow = 192.168.1.1
maxconnections = 5
motdfile = /etc/rsyncd.motd
logfile = /var/log/rsync.log
transferlogging = yes
logformat = %t %a %f %b
syslogfacility = local3
timeout= 300
[110](一个链接的名字,;要用[name]形式)
path = /home(指定文件目录所在位置,这是必须指定的)
auth users = root (认证用户是root,是必须在服务器上存在的用户)
list = yes (意思是把rsync 服务器上提供同步数据的目录在服务器上模块
否显示列出来。默认是yes。如果你不想列出来,就no ;)
ignore errors(忽略IO错误)
secrets file = /etc/rsyncd.secrets (指定密码存在哪个文件)
comment = zhe shi 110 (注释内容;;;可以自己定义)
**exclude = beinan/ samba/(exclude是排除的意思,也就是说,要把/home目录下的easylife和samba排除在外; easylife/和samba/目录之间有空格分开)**
3,建立rsyncd.motd的服务提示信息
[root@localhost ~]# vim /etc/rsyncd.motd
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2008-2012
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
4,建立rsyncd.secrets密码文件
[root@localhost ~]# vim /etc/rsyncd.secrets
root:mike
zhang:mike(这里的用户名必须是系统存在的用户)
~
三,启动rsync服务器及防火墙的设置
A、--daemon参数方式,是让rsync以服务器模式运行
[root@localhost ~]# /usr/bin/rsync--daemon --config=/etc/rsyncd.conf (--config用于指定rsyncd.conf的位置,如果在/etc下可以不写)
B、xinetd方式
修改services加入如下内容
#nano -w /etc/services
rsync873/tcp# rsync
rsync873/udp# rsync(这一步一般可以不做;一般在系统默认都有)
[root@localhost~]# vim /etc/xinetd.rsync
service rsync
{
disable =no
socket_type= stream
wait = no
user = root
server =/usr/bin/rsync
server_args= --daemon
log_on_failure += USERID ((主要是要打开rsync�@��daemon, 一旦有rsync client要连接�r, xinetd会把它转介�o rsyncd(port 873)。然后service xinetd restart, 使上述设定生效.)
rsync服务器和防火墙(因为在企业防火墙默认规则都是DROP,所以要设定防火墙规则允许客户端访问)
[root@localhost~]# iptables -P INPUT DROP(防火墙的默认规则是丢弃进入防火墙的所有数据)
[root@localhost~]# iptables -A INPUT -p tcp --dport 873-j ACCEPT(允许防火墙开放873端口)
[root@localhost~]# iptables -A INPUT -p tcp --sport 873-j ACCEPT(允许外网经过873端口进入防火墙)
四,列出rsync 服务器上的所提供的同步内容;
[root@localhost~]# rsync --list-only [email protected]::
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2008-2012
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
110zheshi 110
(前面是rsync所提供的数据源,也就是我们在rsyncd.conf中所写的[110]模块。而“zheshi 110”是由[110]模块中的comment = zheshi 110 提供的)
五,rsync客户端同步数据;
1、列出rsync 服务器上的所提供的同步内容
[root@localhost~]# rsync --list-only [email protected]::
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2008-2012
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
110zheshi110
2.rsync客户端同步数据
#rsync -avzP [email protected]::110hao(hao是一个目录;;首先在客户端本机建立)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2008-2012
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
110
Passwd:(这里要输入root的密码,是服务器端rsyncd.secrets提供的。在前面的例子中我们用的是mike,输入的密码并不回显,输好就回车。)
(这个命令的意思就是说,用root用户登录到服务器上,把/home下的数据,同步到本地当前目录hao上。当然本地的目录是可以你自己定义的)
3.让客户端上传文件到服务器
[root@localhost~]# rsync -avzP/root/2164[email protected]::110(首先在客户端、root下创建2164这个文件)
回车后还需要输入密码进行验证:
这时可一到服务器上进行查看是否有2164这个文件。。。(当然还可以在XP 上实现同步数据,,,,这是需要使用XP的rsync软件)