本文共 5109 字,大约阅读时间需要 17 分钟。
什么是Rsync?
Rsync(Remote Synchronize)是一款开源的、快速的、多功能的、可以实现全量及增量的本地或远程数据同步备份的优秀工具,并且支持多种操作系统平台运行。 官网文档:Rsync简介
Rsync具有本地与远程两台主机之间的数据快速复制同步镜像、远程备份等功能,该功能类似scp,但是优于scp功能,还具有本地不同分区目录之间全量及增量复制数据。Rsync同步数据镜像时,通过“quick check”算法,仅同步大小或最后修改时间发生变化的文件或目录,当然也可以根据权限,属主等属性变化的同步,所以可以实现快速同步。
rsync 具有如下的基本特性:
1 可以镜像保存整个目录树和文件系统 2 可以很容易做到保持原来文件的权限、时间、软硬链接等 3 无须特殊权限即可安装 4 优化的流程,文件传输效率高 5 可以使用 rsh、ssh 方式来传输文件,当然也可以通过直接的 socket 连接 6 支持匿名传输,以方便进行网站镜象Sersync 项目简介:
本项目利用inotify与rsync对服务器进行实时同步,其中inotify用于监控文件系统事件,rsync是目前广泛使用的同步算法,其优点是只对文件不同的部分进行操作,所以其优势大大超过使用挂接文件系统的方式进行镜像同步。目前使用的比较多的同步程序版本是inotify-tools,另外一个是google开源项目Openduckbill(依赖于inotify-tools),这两个都是基于脚本语言编写的,其设计思路同样是采用inotify与rsync命令。 相比较上面两个项目,本项目优点是: 1.sersync是使用c++编写,而且对linux系统文件系统产生的临时文件和重复的文件操作进行过滤,所以在结合rsync同步的时候,节省了运行时耗和网络资源。因此更快。 2.相比较上面两个项目,sersync配置起来很简单,二进制文件+XML配置文件。 3.使用多线程进行同步,尤其在同步较大文件时,能够保证多个服务器实时保持同步状态。 4.自带出错处理机制,通过失败队列对出错的文件重新同步,如果仍旧失败,则每N个小时对同步失败的文件重新同步。 5.自带crontab功能,只需在xml配置文件中开启,即可按您的要求,隔一段时间整体同步一次。 6.自带socket与http协议扩展,满足您二次开发的需要。系统资源:
[root@test ~]# cat /etc/redhat-release CentOS release 6.8 (Final)10.125.192.10 sersync 分发服务
10.125.192.12 rsync 同步服务检查是否安装rsync
[root@test ~]# rpm -qa rsync rsync-3.0.6-12.el6.x86_64如未安装使用yum安装
yum -y install rsyncrsync 同步服务器操作
vim /etc/rsyncd.conf (默认没有该文件,手工创建) uid = root //运行RSYNC守护进程的用户 gid = root //运行RSYNC守护进程的组 use chroot = no //不使用chroot max connections = 2000 //最大连接数 strict modes = yes //是否检查口令文件的权限 timeout = 600 //超时时间 port = 873 //默认端口873 pid file = /var/run/rsyncd.pid //pid文件的存放位置 lock file = /var/run/rsync.lock //锁文件的存放位置 log file = /var/run/rsyncd.log //日志记录文件的存放位置 ignore errors //可以忽略一些无关的IO错误 hosts allow = 10.125.192.10 //允许主机 hosts deny = 0.0.0.0/32 //禁止主机 read only = no //是否只读 dont compress = *.gz *.bz2 *.zip *.tgz //不压缩哪些格式 auth users = test //认证用户 secrets file = /etc/rsyncd.pass //账户文件位置[www] //定义一个项目
path = /data //要同步备份的路径创建备份目录
mkdir /data创建认证用户文件
vim /etc/rsyncd.pass 更改文件权限 必须为600 chmod 600 /etc/rsyncd.pass启动rsync
rsync --daemon 如果手动创建的配置文件的名字不是rsyncd.conf启动的时候需要加参数 rsync --daemon --config=/配置文件的绝对路径配置开机启动
vim /etc/rc.d/rc.local /usr/bin/rsync --daemon启动后验证
[root@test ~]# lsof -i :873 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME rsync 19887 root 3u IPv4 135575 0t0 TCP *:rsync (LISTEN) rsync 19887 root 5u IPv6 135576 0t0 TCP *:rsync (LISTEN)关闭rsync服务
pkill rsynckill -9 `cat /var/run/rsyncd.pid`
sersync分发服务器配置
分发服务器上rsync配置 vim /etc/rsyncd.pass 新建一个密码文件,里面只写跟用户名对应的密码即可配置文件权限
chmod 600 /etc/rsyncd.pass手工测试rsync同步
[root@test data]# rsync -avz /data ::www --password-file=/etc/rsyncd.pass sending incremental file list data/ data/1.txt data/10.txt data/2.txt data/3.txt data/4.txt data/5.txt data/6.txt data/7.txt data/8.txt data/9.txtsent 512 bytes received 202 bytes 1428.00 bytes/sec
total size is 0 speedup is 0.00注:通过rsync 把当前主机root目录推送到10.125.192.12上
test用户是rsync(同步端)定义的认证用户 www是rsync(同步端)定义的项目 向项目定义的路径中同步数据 –password-file=/etc/rsyncd.pass sersync分发服务器上定义的用户认证文件路径部署sersync服务
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz -C /usr/local/ cd /usr/local/ mv GNU-Linux-x86 sersync cd sersync/ mkdir conf bin logs mv confxml.xml conf/ mv sersync2 bin/sersync cp conf/confxml.xml conf/confxml.xml.bak编辑配置文件
vim /usr/local/sersync/conf/confxml.xml 首先修改源文件24-28行内容 源文件内容24#本地目录 25 #远程rsync路径与共享名 26 27 28
修改后内容
2425 26 27 28
修改源文件35-41行
3536 37 #账号与本地密码文件路径 38 39 40 41
修改后
3536 37 38 39 40 41
改源文件42行 错误日志保存位置
失败后60分钟后重试配置sersync环境变量
echo ‘export PATH=$PATH:/usr/local/sersync/bin’>>/etc/profile source /etc/profile启动sersync
sersync -r -d -o /usr/local/sersync/conf/confxml.xml 注: -r 首次同步需要加的参数 同步所有内容 -d 后台运行 -o 指定配置文件 -n 指定线程数 默认为10个检查启动结果
[root@test data]# ps aux|grep sersync root 3906 0.0 0.0 145536 872 ? Ssl 13:14 0:00 sersync -r -d -o /usr/local/sersync/conf/confxml.xml设置开机自启
vim /etc/rc.d/rc.local /usr/local/sersync/bin/sersync -d -o /usr/local/sersync/conf/confxml.xmlsersync多实例
如果需要对多个目录进行同步,把多个目录配置写到一个配置文件中 只有第一个配置生效,其余配置不生效,所以采取了创建多配置文件的方法来实现 多个目录同步。cp confxml.xml www_confxml.xml
cp confxml.xml logs_confxml.xml cp confxml.xml tools_confxml.xmlvim /usr/local/sersync/conf/www_confxml.xml #修改一个单实例为例
启动方法
sersync -r -d -o /usr/local/sersync/conf/www_confxml.xml sersync -r -d -o /usr/local/sersync/conf/logs_confxml.xml sersync -r -d -o /usr/local/sersync/conf/tools_confxml.xml加入自启动
vim /etc/rc.d/rc.local /usr/local/sersync/bin/sersync -d -o /usr/local/sersync/conf/confxml.xml转载地址:http://hdrpb.baihongyu.com/