MENU

rsync守护进程模式部署加实时同步

2017 年 08 月 28 日 • 应用服务器

这东西之前了解一点,但是没怎么用过,培训那里终于是开始讲服务了,上周六讲的就是这个,但是没讲完,实时同步这里现在还没有涉及到,现在只是能搭建起来,以守护进程的模式,能手动进行怼跟恏的操作及添加多模块,哈哈,现在有必要来总结一下了,不是很难,以CentOS6.9操作系统为例,开撸。

服务端部署过程

1.查看系统是否安装了rsync软件
[root@backup ~]# rpm -qa | grep rsync
[root@backup ~]# yum -y install xinetd

我没有安装rsync,顺便把xinetd也一起装了,使用xinetd来管理rsync

2.创建配置文件,默认不存在
[root@backup ~]# cat >>/etc/rsyncd.conf<<EOF 
> #rsync_config
> #created by HQ at 2017
> ##rsyncd.conf start##
> 
> uid = rsync        #指定服务运行用户
> gid = rsync        #指定服务运行组
> 
> use chroot = no    #安全相关参数
> max connections = 200    #最大连接数
> timeout = 300    #超时实践
> 
> pid file = /var/run/rsyncd.pid     #进程对应的PID进程号文件
> lock file = /var/run/rsync.lock    #锁文件
> log file = /var/log/rsyncd.log     #日志文件,显示错误信息
> 
> ignore errors       #忽略错误程序
> read only = false    #是否只读
> list = false        #是否可以列表
> 
> hosts allow = 10.10.79.0/24     #白名单,允许访问的地址段
> #hosts deny = 0.0.0.0/32        #黑名单,禁止访问的地址段,注意,白名单和黑名单不要同时使用,权限为大者优先,选择其一使用

> auth users = rsync_backup      #认证用户
> secrets file = /etc/rsync.password    #秘钥文件
> 
> [backup]    #模块名称,随便起
> comment = "backup dir"    #说明,随便写
> path = /backup    #备份路径,备份路径要与模块名称一致
> EOF

3.创建备份目录,添加管理用户与组
[root@backup ~]# mkdir /backup
[root@backup ~]# useradd rsync -s /sbin/nologin -M
[root@backup ~]# chown -R rsync.rsync /backup/
4.创建服务端与客户端的身份认证文件
[root@backup ~]# echo "rsync_backup:Sowhat?" > /etc/rsync.password
[root@backup ~]# cat /etc/rsync.password 
rsync_backup:Sowhat?

注意:在linux里,所有的密码文件权限必须是600

[root@backup ~]# chmod 600 /etc/rsync.password

5.配置xinetd管理rsync,并启动进程,默认占用873端口
[root@backup ~]# sed -i '6s#yes#no#g' /etc/xinetd.d/rsync 
[root@backup ~]# /etc/init.d/xinetd start

如果你不想装xinetd,也可以使用一下方法启动

使用--config=参数指定配置文件,服务端配置到这里结束

客户端部署过程

1.创建认证文件

客户端配置也是安装rsync即可,不用安装xinetd,首先要创建认证文件

[root@nfs01 ~]# echo "Sowhat?" > /etc/rsync.password
[root@nfs01 ~]# cat /etc/rsync.password 
Sowhat?
[root@nfs01 ~]# chmod 600 /etc/rsync.password
[root@nfs01 ~]# ll /etc/rsync.password 
-rw------- 1 root root 8 Aug  8 13:44 /etc/rsync.password
[root@nfs01 ~]# yum -y install rsync

2.进行传输测试
[root@nfs01 ~]# rsync -avz /etc/services rsync_backup@10.10.79.135::backup --password-file=/etc/rsync.password

将本机的/etc/services 文件怼到10.10.79.135,也就是服务端

服务端查看文件是否存在

客户端再次传送services文件,因为是增量备份,服务端已经存在了,不会再次传输。

rsync是有一种特殊的算法,来判断你文件是不是改变了,如果改变了,会重新传输,现在搞点事情。修改客户端hosts文件,然后再次进行传输

查看服务端文件是否有变化

添加一个多模块吧,一会做测试用

[nfsbackup]
comment = "nfs-back"
path = /nfsbackup

添加到配置文件上一个模块下面即可,记得重启服务哦

3.传送目录,创建测试文件夹及文件
[root@nfs01 ~]# mkdir rj-bai && cd rj-bai && touch rj-bai{1..10}.txt

[root@nfs01 ~]# rsync -avz rj-bai rsync_backup@10.10.79.135::backup/ --password-file=/etc/rsync.password

查看服务器是否存在

注意,刚刚我传送目录写的是相对路径,我创建的文件夹只是写了文件夹的名字,而没有加/,加上/就会有问题,刚刚加了一个模块,就拿那个模块做一下测试吧。

[root@nfs01 ~]# rsync -avz rj-bai/ rsync_backup@10.10.79.135::nfsbackup --password-file=/etc/rsync.password

看一下服务器,只是将目录下的文件传了过来,没有同步文件夹,所以综上所述,rj-bai/表示同步rj-bai目录下的内容,但不包含目录本身,rj-bai表示同步rj-bai目录下内容及目录本身。有点绕,就是加了/只同步目录下的内容,不包含本身,不加/表示同步目录及目录下内容。

rsync命令参数

-v 详细模式输出,显示传输进度
-z传输室进行压缩提高传输效率
-a归档模式,等同于参数-rtopgDI
-r对子目录进行递归模式
-t保持文件时间信息
-o保持文件属主信息
-p保持文件权限
-g保持文件数组信息
-P显示同步过程及进度信息
-D 保持设备文件信息
-l 保留软连接
-e 使用的通信协议
--exclude= 排除,与tar命令一致
--exclude-from=排除多个文件,需要写在某个文本里
--bwlimit= 限速,默认以K为单位
--delete 让目标目录SRC和源目录数据DST一致,既无差异同步数据

实时同步

这里有两种方法,第一个是使用inotify,第二个是使用sersync,以下会分别介绍下面的两个软件的实现办法,任选一种使用即可,建议使用sersync,比较简单粗暴,哈哈,同步软件是要放在客户端的,向服务端推送,如果要做实时同步请不要以xinetd启动服务,可能会有问题,开撸。

使用inotify
1.客户端下载软件

2.编译安装inotify
[root@nfs01 src]# tar zxf inotify-tools-3.14.tar.gz 
[root@nfs01 src]# cd inotify-tools-3.14
[root@nfs01 inotify-tools-3.14]# ./configure --prefix=/usr/local/inotify
[root@nfs01 inotify-tools-3.14]# make && make install
3.编写融合脚本
#!/bin/bash
/usr/local/inotify/bin/inotifywait -mrq --format “%w%f” -e moved_to,delete,create,close_write /data|\
while read line
do
   rsync -az --delete /data/  rsync_backup@10.10.79.135::nfsbackup --password-file=/etc/rsync.password
done
4.测试新建文件

在客户端创建文件,测试能不能同步过去。

[root@nfs01 ~]# cd /data/
[root@nfs01 data]# ls | wc -l
0
[root@nfs01 data]# touch rj-bai{1..100}
[root@nfs01 data]# ls | wc -l
100

服务端查看

[root@backup nfsbackup]# ls | wc -l
100

5.测试删除文件
[root@nfs01 data]# ls | xargs \rm
[root@nfs01 data]# ls | wc -l
0

服务端查看

[root@backup nfsbackup]# ls | wc -l
0
6.测试递归
[root@nfs01 data]# mkdir tester && cd tester 
[root@nfs01 tester]# touch tester{1..1000}
[root@nfs01 tester]# ls | wc -l
1000
[root@nfs01 tester]# pwd
/data/tester

服务端查看

[root@backup nfsbackup]# cd tester/
[root@backup tester]# ls | wc -l
1000

木有问题,可以用,但是文件太多了或是太大了同步会有一定的延时,这个木办法.

使用sersync
1.下载软件

2.安装配置
[root@nfs01 src]# unzip sersync2.5.4_64bit.zip 
[root@nfs01 src]# mv sersync_installdir_64bit/* /usr/local/
[root@nfs01 ~]# vim /usr/local/sersync/conf/confxml.xml

3.启动sersync,测试
[root@nfs01 ~]# /usr/local/sersync/bin/sersync -dro /usr/local/sersync/conf/confxml.xml
-bash: /usr/local/sersync/bin/sersync: Permission denied
[root@nfs01 ~]# chmod +x /usr/local/sersync/bin/sersync 
[root@nfs01 ~]# /usr/local/sersync/bin/sersync -dro /usr/local/sersync/conf/confxml.xml

每次启动都会自动全部进行一次全量同步,也是数据量大了也会有延时,如果要监控多个目录,就再写一个配置文件启动即可,使用-o参数指定配置文件,测试这块我就不写了,自己测吧,自动同步到此结束。

yum源

其实inotify可以使用yum方式安装,建议使用阿里云的yum源,包括常规源及扩展源,如要将现有的更换为阿里云的,操作如下。

常规源
[root@rj-bai ~]# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup  #备份
[root@rj-bai ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo  #下载源
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
102  2572  102  2572    0     0  41881      0 --:--:-- --:--:-- --:--:--  114k
扩展源
[root@rj-bai ~]# mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup  #备份
[root@rj-bai ~]# mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup  #备份
[root@rj-bai ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo  #下载阿里云源
--2017-08-28 17:02:29--  http://mirrors.aliyun.com/repo/epel-6.repo
Resolving mirrors.aliyun.com... 112.124.140.210, 115.28.122.210
Connecting to mirrors.aliyun.com|112.124.140.210|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1083 (1.1K) [application/octet-stream]
Saving to: “/etc/yum.repos.d/epel.repo”
100%[===============================================================================================================================================================>] 1,083       --.-K/s   in 0s      
2017-08-28 17:02:29 (202 MB/s) - “/etc/yum.repos.d/epel.repo” saved [1083/1083]
最后编辑于: 2018 年 12 月 10 日
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码