rsync_sersync实现实时同步

RSYNC原理

  1. 简介

系统下的文件同步和传输工具

  1. 版本

rsync --version

  1. 特性和优点
    1. 特性:可以镜像保存整个目录树和文件系统

可以很容易做到保持原来文件的权限、时间、软硬链接等等

3.2 优点:快速:第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的 文件 (及增量)。

压缩传输:rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用 更少 的带宽。

安全:可以使用ssh协议来传输文件

支持匿名传输,以方便进行网站镜象。

选择性保持:符号连接,硬链接,文件属性,权限,时间等

传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用

  1. 运行模式和端口

采用C/S模式(客户端/服务器模式)

端口tcp 873

  1. 数据同步方式

推push:一主机负责把数据传送其他主机,服务器开销大,适合后端服务器少的

拉pull:所有主机找一主机拉数据,导致数据缓慢

需要备份的机器是服务端,存储备份的机器是客户端

push中,rsync服务器提供文档目标位置,发起端具有写入权限

pull中,rsync服务器提供文档原始位置,发起端具有读取权限

配置同步源

  1. ssh同步源(系统用户同步数据)

1.1 在目标主机上建立同步数据的系统用户,设置用户对目录具有写入权限

创建用户:

# useradd xkk && echo 'xkk:123456' | chpasswd

对目录赋予权限

#mkdir /xkk   创建用户

#setfacl -R -m user:xkk:rwx /xkk   设置xkk的权限

1.2 在服务器上创建测试数据  

mkdir -p /var/xkk/html

cp -r /boot/* /var/xkk/html

1.3 测试,在服务器上执行rsync同步数据命令

rsync命令的基本用法:

格式:rsync 【选项】 源文件 目标文件

常见的选项:

-a,--archive 归档模式,表示以递归的方式传输文件,并且保持文件属性,等同于-rlptgoD

-r,–recursive 对子目录以递归模式处理,即同步所有下面的数据

-l,--links 表示拷贝链接文件

-p , --perms 表示保持文件原有权限

-t , --times 表示保持文件原有时间

-g , --group 表示保持文件原有属用户组

-o , --owner 表示保持文件原有属主

-D , --devices 表示块设备文件信息

-z , --compress 表示压缩传输

-H 表示硬连接文件

-A 保留ACL属性信息(需配合-p选项)

-P 显示传输进度

-u, --update 仅仅进行更新,也就是跳过所有已经存在于目标位置,并且文件时间晚于要备份的文件。(不覆盖更新的文件)

--port=PORT 定义rsyncd(daemon)要运行的Port(预设为tpc  873)

--delete 删除那些目标位置有而原始位置没有的文件

--password-file=FILE 从FILE中得到密码

--bwlimit=KBPS 限制I/O带宽,KBytes /second

--filter “-filename” 需要过滤的文件

--exclude=filename :需要过滤的文件

-v 显示同步过程的详细信息

常用的-avz

注意:如传输大文件,不要用z参数,比较耗时

由于用户xkk并非root用户,因此”-g”、”-o”、“-t”选项将无法使用

方法一:

执行rsync同步命令不使用-a选项

#rsync -rlvz --delete /var/xkk/html/  xkk@192.168.1.1:/xkk/

方法二:

在目标服务器上设置目录/xkk/的属主和属组为xkk

#chown -R xkk:xkk /xkk/

在服务器上执行rsync同步操作

#rsync -avz --delete /var/xkk/html/  xkk@192.168.1.1:/xkk/

1.4 验证结果

在备份服务器上显示/xkk目录下的列表

ls查看

验证增量同步数据

在服务器的/var/xkk/html/目录下新建一个文件,执行rsync同步操作

1.5 脚本实现定时自动备份

SSH同步源的无交互验证

对于SSH服务器,采用秘钥验证是避免交互登录的最佳方法,在服务器中创建密钥 对,将公钥发给服务器备份用户,就可以实现无密码登录

#ssh-keygen -t rsa   直接enter回车

将公钥发给备份服务器

#ssh-copy-id -i xkk@192.168.1.1   

在客户端测试SSH的秘钥验证

#ssh xkk@192.168.1.1

#exit   退出ssh连接

成功实现免交互自动登录,再次使用rsync访问SSH同步源时,不需要密码验证

  1. rsync同步源(虚拟用户同步数据)

2.1下面是常见的全局配置参数,

port:指定后台程序使用的端口号,默认为873。

uid:该选项指定当该模块传输文件时守护进程应该具有的uid,配合gid选项使用可以确定哪些可以访问怎么样的文件权限,默认值是" nobody" 。

gid:该选项指定当该模块传输文件时守护进程应该具有的gid。默认值为" nobody" 。

max connections:指定该模块的最大并发连接数量以保护服务器,超过限制的连接请求将被告知随后再试。默认值是0,也就是没有限制。

lock file:指定支持max connections参数的锁文件,默认值是/var/run/rsyncd.lock。

motd file:" motd file" 参数用来指定一个消息文件,当客户连接服务器时该文件的内容显示给客户,默认是没有motd文件的。

log file:" log file" 指定rsync的日志文件,而不将日志发送给syslog。

pid file:指定rsync的pid文件,通常指定为“/var/run/rsyncd.pid”,存放进程ID的文件位置。

hosts allow = 单个IP地址或网络地址   //允许访问的客户机地址

下面是常见的模块配置参数

主要是定义服务器哪个目录要被同步输出。

其格式必须为“[共享模块名]”形式,这个名字就是在rsync客户端看到的名字,其实有点象Samba服务器提供的共享名。而服务器真正同步的数据是通过 path来指定的。

Comment:给模块指定一个描述,该描述连同模块名在客户连接得到模块列表时显示给客户。默认没有描述定义。

Path:指定该模块的供备份的目录树路径,该参数是必须指定的。

read only :yes为只允许下载,false为可以下载和上传文件到服务器 

exclude:用来指定多个由空格隔开的多个文件或目录(相对路径),将其添加到exclude列表中。这等同于在客户端命令中使用—exclude或----filter来指定某些文件或目录不下载或上传(既不可访问)

exclude from:指定一个包含exclude模式的定义的文件名,服务器从该文件中读取exclude列表定义,每个文件或目录需要占用一行

include: 用来指定不排除符合要求的文件或目录。这等同于在客户端命令中使用--include来指定模式,结合include和exclude可以定义复杂的exclude/include规则。

include from:指定一个包含include模式的定义的文件名,服务器从该文件中读取include列表定义。

auth users:该选项指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。这里的用户和系统用户没有任何关系。如果" auth users" 被设置,那么客户端发出对该模块的连接请求以后会被rsync请求challenged进行验证身份,这里使用的challenge/response认证协议。用户的名和密码以明文方式存放在" secrets file" 选项指定的文件中。默认情况下无需密码就可以连接模块(也就是匿名方式)。

secrets file:该选项指定一个包含定义用户名:密码对的文件。只有在" auth users" 被定义时,该文件才有作用。文件每行包含一个username:passwd对。一般来说密码最好不要超过8个字符。没有默认的secures file名,注意:该文件的权限一定要是600,否则客户端将不能连接服务器。

hosts allow:指定哪些IP的客户允许连接该模块。定义可以是以下形式:

单个IP地址,例如:192.167.0.1,多个IP或网段需要用空格隔开,

整个网段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0 

“*”则表示所有,默认是允许所有主机连接。

hosts deny:指定不允许连接rsync服务器的机器,可以使用hosts allow的定义方式来进行定义。默认是没有hosts deny定义。

list:该选项设定当客户请求可以使用的模块列表时,该模块是否应该被列出。如果设置该选项为false,可以创建隐藏的模块。默认值是true。

Timeout:通过该选项可以覆盖客户指定的IP超时时间。通过该选项可以确保rsync服务器不会永远等待一个崩溃的客户端。超时单位为秒钟,0表示没有超时定义,这也是默认值。对于匿名rsync服务器来说,一个理想的数字是600。

2.2 在备份服务器上创建rsyncd.conf文件

2.3 为备份用户创建数据用户

#vim /etc/rsync.passwd

xkk:123.com

#chmod 600 /etc/rsync.passwd

该文件设置权限700或600,权限不对身份验证会失败

启动rsync服务程序,执行”rsync  --daemon”命令就可以启动rsync服务

要关闭用kill进程方式

#rsync --daemon --config=/etc/rsyncd.conf

#ps aux | grep rsync

#netstat -naptu | grep :873

注:关闭防火墙,selinux

2.3 rsync同步源配置完毕,下面使用rsync备份工具实现备份操作(服务器)

格式1:

rsync  选项  源文件  用户名@同步源服务器IP::共享模块名

#rsync -avz --delete /var/xkk/html/ xkk@192.168.1.1::[共享模块名]

格式2:

rsync  选项  源文件  rsync://用户名@备份源服务器IP/共享模块名

#rsync -avz --delete /var/xkk/html rsync://xkk@192.168.1.1/[共享模块名]

密码处理

新建一个文件,写入密码,给他权限,在rsync命令中使用--passwd-file指定文件

#vim /etc/rsync.passwd

#chmod 600 /etc/rsync.passwd

配置rsync+sersync实时同步

以上类同

2)在源机器(server01)上开始部署sersync服务

1)下载sersync

 sersync的可执行文件版本(sersync2.5.4_64bit_binary_stable_final.tar.gz),里面有配置文件与可执行文件

将sersync上传到服务器 /opt目录下

# mv sersync2.5.4_64bit_binary_stable_final.tar.gz  /opt/

# cd  /opt/

# tar zxf sersync2.5.4_64bit_binary_stable_final.tar.gz

# ll

# mv  GNU-Linux-x86  /opt/sersync

# cd  /opt/sersync/

2)配置sersync

# cp confxml.xml  confxml.xml.bak

更改优化sersync配置文件:

修改24--28行

 

参数说明:

<localpath watch="/var/www/html">    #本地要监控的同步目录

<remote ip="192.168.30.15" name="wwwroot"/>   #rsync服务器的ip地址和rsync共享模块名称

修改31--34行,认证部分【rsync密码认证】

 

注意:红色框是需要修改的部分

3)开启sersync守护进程同步数据

# /opt/sersync/sersync2  -d  -r  -o  /opt/sersync/confxml.xml

4)测试

server01上对/var/www/html/目录增删改目录文件,

看server02上/web-bak/目录的变化

[root@server02 ~]# watch  ls  -l  /web-bak/

提示:watch可以帮你监测一个命令的运行结果,来监测你想要的一切命令的结果变化

5)设置sersync监控开机自动执行

 # vim  /etc/rc.d/rc.local  #编辑,在最后添加一行

 /opt/sersync/sersync2  -d  -r  -o  /opt/sersync/confxml.xml  #设置开机自动运行脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白xkk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值