第四十节、同步服务RSYNC
2018-01-16 本文已影响0人
妄语莫言
RSYNC服务
Rsync是Unix/Linux下的一款应用软件,利用它可以使多台服务器数据保持同步一致性,第一次同步时 rsync 会复制全部内容,但在下一次只传输修改过的文件。
Rsync 在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的带宽。可以很容易做到保持原来文件的权限、时间、软硬链接等。
服务安装
#切换下载文件目录
[root@localhost ~]# cd /usr/src/
#下载服务稳定版本
[root@localhost src]# wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
--2018-01-04 12:26:05-- http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz
正在解析主机 rsync.samba.org... 144.76.82.156, 2a01:4f8:192:486::443:2
正在连接 rsync.samba.org|144.76.82.156|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:779287 (761K) [application/gzip]
正在保存至: “rsync-3.0.7.tar.gz”
100%[============================================================>] 779,287 332K/s in 2.3s
2018-01-04 12:26:08 (332 KB/s) - 已保存 “rsync-3.0.7.tar.gz” [779287/779287])
#解压
[root@localhost src]# tar zxvf rsync-3.0.7.tar.gz
#进入源码包目录开始安装
[root@localhost src]# cd rsync-3.0.7
[root@localhost rsync-3.0.7]# ls
access.c config.sub hashtable.c options.c rsyncd.conf.5 token.c
aclocal.m4 configure hlink.c packaging rsyncd.conf.yo trimslash.c
acls.c configure.in ifuncs.h params.c rsync.h t_stub.c
authenticate.c configure.sh INSTALL pipe.c rsyncsh.txt t_unsafe.c
backup.c connection.c install-sh popt rsync.yo tweak_manpage
batch.c COPYING io.c prepare-source runtests.sh uidlist.c
byteorder.h csprotocol.txt io.h prepare-source.mak sender.c util.c
case_N.h doc lib progress.c shconfig.in wildtest.c
checksum.c Doxyfile loadparm.c proto.h socket.c wildtest.txt
chmod.c errcode.h log.c proto.h-tstamp support xattrs.c
cleanup.c exclude.c main.c README syscall.c zlib
clientname.c fileio.c Makefile.in receiver.c tech_report.tex
clientserver.c flist.c match.c rounding.c testhelp
compat.c generator.c mkproto.pl rsync.1 testsuite
config.guess getfsdev.c NEWS rsync3.txt tls.c
config.h.in getgroups.c OLDNEWS rsync.c TODO
#预编译指定安装目录
[root@localhost rsync-3.0.7]# ./configure --prefix=/usr/local/rsync&&make&&make install
创建rsync服务端配置文件,一般linux系统会自带rsync服务但是没有相应的配置文件需要手动编辑创建
#提示缺少配置文件无法启动
[root@localhost rsync]# rsync --daemon
Failed to parse config file: /etc/rsyncd.conf
[root@localhost ~]# vim /etc/rsyncd.conf
#########[global] 全局配置
uid = nobody
gid = nobody
use chroot = no #不允许切换到根
max connections = 30 #最大允许客户端的连接数量
pid file = /var/run/rsyncd.pid #查看进程pid号文件路径
lock file = /var/run/rsyncd.lock #锁文件锁定pid,每次重启服务需要删除锁文件
log file = /var/log/rsyncd.log #日志文件存放路径
transfer logging = yes #开启传输打印的日志
log format = %t %a %m %f %b #定义日志的格式
syslog facility = local3 #linux日志级别local3普通
timeout = 300 #同步超时300秒报错
##########局部配置模块允许客户端同步自己的目录,多个目录设置多个模块
[www]
read only = yes #目录权限只读
path = /usr/local/webapps #定义客户端同步的目录
comment = www #引用自己的模块名
auth users =test #客户端使用test用户同步
secrets file = /etc/rsync.pas #在服务端定义好同步使用的用户名密码
hosts allow = 192.168.0.11,192.168.0.12 #允许同步自己的主机IP,逗号间隔添加多个主机
##############局部模块用于第二个目录
[web]
read only = yes
path = /data/www/web
comment = web
auth users =test
secrets file = /etc/rsync.pas
hosts allow = 192.168.1.11,192.168.0.0/24
Rsync配置参数说明:
[www] #要同步的模块名
path = /usr/local/webapps #要同步的目录
comment = www #这个名名称无所谓,最后模块名一致
read only = no # no客户端可上传文件,yes只读
write only = no # no客户端可下载文件,yes不能下载
list = yes #是否提供资源列表
auth users =test #登陆系统使用的用户名,没有默认为匿名。
hosts allow = 192.168.0.10,192.168.0.20 #本模块允许通过的IP地址
hosts deny = 192.168.1.4 #禁止主机IP
secrets file=/etc/rsync.pas #密码文件存放的位置
启动rsync服务查看进程及对应的端口号
[root@localhost rsync]# rsync --daemon
[root@localhost rsync]# ps -ef|grep rsync
root 7497 1 0 05:19 ? 00:00:00 rsync --daemon
root 7501 1286 0 05:19 pts/0 00:00:00 grep rsync
[root@localhost rsync]# netstat -ntpl|grep rsync
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 7497/rsync
tcp 0 0 :::873 :::* LISTEN 7497/rsync
客户端同步命令
[root@localhost rsync]# rsync -aP --delete test@192.168.0.100::www /usr/local/webapps --password-file=/etc/rsync.pas
#参数aP打印同步日志信息
#参数--delete 强制删除,客户端与源服务端必须保持完全一致
[root@localhost rsync]# rsync -av test@192.168.0.100::www /usr/local/webapps --password-file=/etc/rsync.pas
#参数av增量同步