正式安装,官网下载rsync稳定版本,而后进行安装编译。linux
cd /usr/src ;wget http://rsync.samba.org/ftp/rsync/src/rsync-3.0.7.tar.gz web
tar xzf rsync-3.0.7.tar.gz && cd rsync-3.0.7 && ./configure --shell
prefix=/usr/local/rsync &&make &&make install服务器
安装完毕,配置rsync配置文件,默认/etc/不存在rsyncd.conf配置文件,须要手动建立,配置内容为以下:cat rsyncd.confapp
uid = nobody
gid = nobody
use chroot = no
max connections = 30
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[shell]
read only = yes
path = /root/shell
comment = shell
auth users = ceshi 用户非系统用户
secrets file = /etc/rsync.pas 密码文件名能够随意
hosts allow = 192.168.10.128ssh
启动服务器端RSYNC主进程,/usr/local/rsync/bin/rsync --daemon ,监听端口TCP 873webapp
设置rsync服务器端同步密钥:ui
vi /etc/rsync.passpa
ceshi:123123orm
保存完毕,chmod 600 /etc/rsync.pas设置权限为宿主用户读写。
最后在客户端配置同步密钥和命令,以下设置便可同步。
vi /etc/rsync.pas 输入服务器端配置的密码(只需密码不需用户名 ):
123123
chmod 600 /etc/rsync.pas 服务端客户端权限必须700或600 不然没法读取密码文件
保存便可开始同步:执行以下语句
Rsync -aP --delete ceshi@192.168.0.100::shell /usr/local/webapps --bwlimit=200 --password-file=/etc/rsync.pas
注*/usr/local/webapps为客户端的目录,@前test是认证的用户名;IP后面俩个冒号shell为rsync服务器端的模块名称。--bwlimit=200限速200K
参数详解
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 #密码文件存放的位置
-a, ––archive |
归档模式,表示以递归方式传输文件,并保持全部文件属性。 |
––exclude=PATTERN |
指定排除一个不须要传输的文件匹配模式 |
––exclude-from=FILE |
从 FILE 中读取排除规则 |
––include=PATTERN |
指定须要传输的文件匹配模式 |
––delete |
删除那些接收端还有而发送端已经不存在的文件(保持2边数据彻底一致,客户端增长数据也会删除) |
-P |
等价于 ––partial ––progress |
-v, ––verbose |
详细输出模式 |
-q, ––quiet |
精简输出模式 |
––rsyncpath=PROGRAM |
指定远程服务器上的 rsync 命令所在路径 |
––password-file=FILE |
从 FILE 中读取口令,以免在终端上输入口令, 一般在 cron 中链接 rsync 服务器时使用 |
7.4.2Rsync基于SSH同步
除了可使用rsync密钥进行同步以外,还有一个比较简单的同步方法就是基于linux ssh来同步。具体方法以下:
rsync -aP --delete root@192.168.0.10:/data/www/webapps /data/www/webapps ,若是想每次同步不输入密码,须要作Linux主机之间免密码登陆。
实时同步
rysnc +inotify
除了可使用rsync密钥进行同步以外,还有一个比较简单的同步方法就是基于linux ssh来同步。具体方法以下:
rsync -aP --delete root@192.168.0.10:/data/www/webapps /data/www/webapps ,若是想每次同步不输入密码,须要作Linux主机之间免密码登陆。
在企业平常web应用中,某些特殊的数据须要要求保持跟服务器端实时同步,那咱们该如何来配置呢?如何来实现呢?这里能够采用rsync+inotify来实现需求。
Inotify 是一个 Linux特性,它监控文件系统操做,好比读取、写入和建立。Inotify 反应灵敏,用法很是简单,而且比 cron 任务的繁忙轮询高效得多。
Rsync安装完毕后,须要安装inotify文件检查软件。同时为了同步的时候不须要输入密码,这样可使用ssh免密钥方式进行同步。
安装inotify-tools-3.14.tar.gz 软件,tar –xzf inotify-tools-3.14.tar.gz ;./configure ;make
;make install 便可。配置auto_inotify.sh同步脚本,内容以下:
#!/bin/sh
src=/root/shell
des=/root/shell
ip=192.168.10.128
inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${src} | while read file
do
for i in $ip
do
/usr/local/rsync/bin/rsync -aP --delete $src root@$ip:$des
done
done
在服务器端后台启动该脚本,nohup sh auto_inotify.sh & ,在服务器端目录新建或者删除,客户端都会实时进行相关操做。