1, 先安装好 rsyncd 服务端, 并配置可以从客户端将数据同步到服务端, 也可以将服务端的数据拉取到本地
Rsync 服务端配置如下:
1.1, 创建 rsyncd.conf 配置文件
Vim /etc/rsyncd.conf 配置信息如下
- #Rsync server
- ##rsyncd.conf start##
uid = rsync 这个用户就是对后面 path 有读写权限
gid = rsync 对后面 path 有读写权限
use chroot = no 无限制
max connections = 2000 最大连接数
timeout = 600 超时时间
pid file = /var/run/rsyncd.pid
- lock file = /var/run/rsyncd.lock
- log file = /var/log/rsyncd.log
ignore errors
read only = false 设置 rsync 服务端文件的读写权限
list = false 不显示 rsync 服务端资源列表
hosts allow = 192.168.239.0/24 允许的客户端连接的 IP 地址
hosts deny = 0.0.0.0/32 拒接客户端连接的 IP 地址
auth users = rsync_backup 建立的虚拟用户
secrets file = /etc/rsync.password 建立虚拟用户的密码文件
#####################################
[www]
- path = /data/www/
- [web]
- path= /data/web/
1.2, 创建 rsync 用户用于管理 path 路径
Mkdir -p /data/www/
Touch /data/www/ddd.txt
Groupadd rsync
Useradd -s /sbin/nologin -g rsync -M rsync
Chown -R rsync.rsync /data/www
1.3, 创建虚拟用户和密码并授权 600
Echo "rsync_backup:oldboy">> /etc/rsync.password
Chmod 600 /etc/rsync.password
1.4, 启动 rsync 服务
Rsync --daemon
2, 配置好 rsync 客户端, 并测试推送数据和拉取数据
2.1, 创建虚拟用户密码文件
Touch /etc/rsync.password
Echo "oldboy">>/etc/rsync.password
Chmod 600 /etc/rsync.password
2.2, 创建测试文件
Mkdir -p /data/web
Touch /data/web/abc.txt
2.3, 推送数据到 rsync 服务端, 和将服务端 ddd.txt 文件拉取到本地
- Rsync -avzR /data/web/ rsync_backup@192.168.239.133::web -password-file=/etc/rsync.password
- Rsync -avzR rsync_backup@192.168.239.133::web /data/web -password-file=/etc/rsync.password
3, 下载 sersync 并配置
Cd /usr/local/src/
Wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/sersync/sersync2.5.4_64bit_binary_stable_final.tar.gz
压缩包里面有两个文件 confxml.xml sersync2
sersync2 这个是 sersync 主程序
confxml.xml 这个是 sersync 配置文件
tar xf sersync2.5.4_64bit_binary_stable_final.tar.gz
mv GNU-Linux-x86$usr/local/sersync
cd /usr/local/sersync
mkdir bin conf logs
mv confxml.xml ./conf
mv sersync2 ./bin
4, 配置 confxml.xml 文件(××× 是需要修改的部份)
- <head version="2.5">
- <host hostip="localhost" port="8008"></host>
- <debug start="false"/>
- <fileSystem xfs="false"/>
- <filter start="false">
- <exclude expression="(.).svn"></exclude>
- <exclude expression="(.).gz"></exclude>
- <exclude expression="^info/"></exclude>
- <exclude expression="^static/"></exclude>
- </filter>
- <inotify>
- <delete start="true"/>
- <createFolder start="true"/>
- <createFile start="false"/>
- <closeWrite start="true"/>
- <moveFrom start="true"/>
- <moveTo start="true"/>
- <attrib start="false"/>
- <modify start="false"/>
- </inotify>
- <sersync>
- <localpath watch="/data/web">
/data/web 就是 rsync 客户端的目录
<remote ip="192.168.239.133" name="web"/>
192.168.239.133 就是 rsync 服务器的 IP 地址
Name=web 这个 web 就是在 rsyncd.conf 配置文件里面定义的模块
<!--<remote ip="192.168.8.39" name="tongbu"/>--> 这个注释
<!--<remote ip="192.168.8.40" name="tongbu"/>--> 这个注释
- </localpath>
- <rsync>
- <commonParams params="-artuz"/>
-artuz 就是 rsync 后面对应的参数选项, 例如 rsync -avzR
<auth start="true" users="rsync_backup" passwordfile="/etc/rsync.passwd"/>
Users = 虚拟用户 passwordfile = 虚拟用户的密码文件所在的位置
- <userDefinedPort start="false" port="874"/><!-- port=874 -->
- <timeout start="false" time="100"/><!-- timeout=100 -->
- <ssh start="false"/>
- </rsync>
- # 目标服务器传输失败时会重新传输, 再次失败会写入 rsync_fail_log 中, 每隔一段时间 (timeToExecute) 执行脚本再次传输
- <failLog path="/usr/local/sersync/logs/rsync_fail_log.sh" timeToExecute="60"/><!--default every 60mins execute once-->
- <crontab start="false" schedule="600"><!--600mins-->
- <crontabfilter start="false">
- <exclude expression=".php"></exclude>
- <exclude expression="info/"></exclude>
- </crontabfilter>
- </crontab>
- <plugin start="false" name="command"/>
- </sersync>
- <plugin name="command">
- <param prefix="/bin/sh" suffix=""ignoreError="true"/> <!--prefix /opt/tongbu/mmm.sh suffix-->
- <filter start="false">
- <include expression="(.*)\.php"/>
- <include expression="(.*)\.sh"/>
- </filter>
- </plugin>
- <plugin name="socket">
- <localpath watch="/opt/tongbu">
- <deshost ip="192.168.138.20" port="8009"/>
- </localpath>
- </plugin>
- <plugin name="refreshCDN">
- <localpath watch="/data0/htdocs/cms.xoyo.com/site/">
<cdninfo domainname="ccms.chinacache.com" port="80" username="xxxx" passwd="xxxx"/>
- <sendurl base="http://pic.xoyo.com/cms"/>
- <regexurl regex="false" match="cms.xoyo.com/site([/a-zA-Z0-9]*).xoyo.com/images"/>
- </localpath>
- </plugin>
- </head>
5, 启动 sersync
启动方法 /usr/local/sersync/bin/sersync2 -r -d -o /usr/local/sersync/conf/confxml.xml
-d daemon 方式启动
-n 启用线程数量
-o 指定配置文件
-r 递归同步目录数据
来源: http://www.bubuko.com/infodetail-2552313.html