Rsync是一款远程同步软件,在同步文件(文件和目录)的时候可以保持原文件的权限、修改时间、包括链接文件也可以同步。
这个东西应用在什么地方呢?不管你是什么业务,如果你有几十台以上的服务器,并且这些服务器需要实时保持拥有的文件一致,那你就会用到这个工具。比如你有几十台web服务器,网页文件会经常修改,如何批量同步这些新的网页文件到所有服务器上呢?
Inotify又是什么呢?它是一种通知机制,随着时间的推移,你的原文件夹可能越来越大,如果每次同步都把整个目录扫描一遍那简直不敢想象,inotify就是内核提供的一种功能,可以实现对目录的监控,如果该目录有任何文件的删除、修改、新建它都会捕捉到这一动作,并可以把这一事件发送给其他应用程序。
主机名 | IP | 说明 |
Linux01.localhost | 10.10.6.12 | |
Linux02.localhost | 10.10.6.15 | 运行rsync守护进程,作为Server端,接收推送。 |
安装Rsync
实现原理:
rsync采用的是C/S结构,不过S端是服务器端,运行rsync的守护进程,C端通过命令来向S端推送文件。
安装:
rpm -qa rsync #检查是安装了rsync rpm -e rsync #如果安装了,那么就删除,系统自带的版本比较低 wget https://download.samba.org/pub/rsync/rsync-3.1.2.tar.gz --no-check-certificate
tar -xzf rsync-3.1.2.tar.gz cd rsync-3.1.2 ./configure --prefix=/usr/local/rsync --disable-ipv6
如果不指定安装目录,则默认会安装到如下目录中:
make && make install
设置账户和目录:
groupadd -r rsync #创建rsync系统组 useradd -g rsync rsync -r -s /sbin/login #创建rsync系统账号并加入到rsync组
mkdir backup #创建用于接收推送文件的目录 chown rsync.rsync ./backup #设置改目录的属主和属组位rsync
编辑配置文件:编译安装后它使用的配置文件默认位置为/etc/rsyncd.conf,但是默认这个文件并不存在,需要你手动建立。
touch /etc/rsyncd.conf #守护进程使用的配置文件,必须是rsyncd.conf touch /etc/rsyncd.passwd #用户名和密码文件,这个名字可以随便 chmod 600 /etc/rsyncd.passwd #修改密码文件权限
vim /etc/rsyncd.conf #编辑配置文件
#[全局配置] # 服务器IP和监听端口号 address = 10.10.6.15 port = 873 # 服务器传输文件时发给哪个用户和哪个组来执行。 pid = rsync gid = rsync # 在文件传输之前,服务器守护进程将chroot到指定的PATH,优点是实时特殊的保护,缺点是需要roo# t权限 use chroot = no # 最大并发数 max connection = 10 # 超时时长 timeout = 300 # 锁、日志和pid文件位置 lock file = /var/run/rsync.lock log file = /var/run/rsync.log pid file = /var/run/rsync.pid # 消息文件,当客户端连接到服务器是该文件的内容将会显示给客户端 motd file = /etc/rsyncd.mod # 存放虚拟用户和密码的文件 secrets file = /etc/rsyncd.passwd # 允许的网段 hosts allow = * # 不允许的网段 #hosts deny = 0.0.0.0/32 # 是否允许客户上传文件,true不允许,false允许。 read only = false #[模块配置],所谓模块配置其实就是要使用的目录,客户端推送文件到服务器端的哪个目录 # 需要接收同步的目录 path = /usr/local/backup # 是否忽略错误 ignore errors list = false # 虚拟的用户,也就是客户端用那个用户来连接服务器,可以用空格或者逗号分隔多个用户,该用户 # 必须在上面secrets file = /etc/rsyncd.passwd文件中 auth users = rsync_backup # 该模块的描述,客户端连接后会显示给客户端 commment = hello
rsync可以以守护进程的方式运行,也可以由xinetd来激活,如果你的服务器负载比较高建议rsync以独立的守护进程方式来运行。区别在于,如果以独立的守护进程方式运行,它会一直监听端口随时准备接受文件推送,如果由xinetd这个超级进程来管理的话,那没有推送的时候rsync是休眠状态,当有推送的时候,由xinetd这个超级进程激活rsync,对于繁忙的服务器来说这种方式会有额外开销。
本文出自 “小恶魔的家” 博客,请务必保留此出处http://littledevil.blog.51cto.com/9445436/1870338
原文地址:http://littledevil.blog.51cto.com/9445436/1870338