作者:邓聪聪
常用同步工具sync的进阶软件
服务端的配置:
uid = rsync gid = rsync port = 873 use chroot = on max connections = 200 timeout = 120 lock file = /var/run/rsyncd.lock log file = /var/log/rsyncd.log read only = false list = false fake super = yes hosts allow = 172.16.16.0/24 hosts deny = 0.0.0.0/32 secrets file = /etc/rsyncd.password auth users = rsync [backup] path = /data
客户端在推送时,有这样一个报错,但不影响文件的传输:
[root@172 data]# rsync -avzP a.txt backup@172.16.16.10::backup Password: sending incremental file list a.txt 8 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1) rsync: chgrp "/.a.txt.llMDKO" (in backup) failed: Operation not permitted (1) ###无法操作 sent 100 bytes received 125 bytes 90.00 bytes/sec total size is 8 speedup is 0.04 rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) [sender=3.1.2]
解决后:
[root@172 data]# rsync -avzP /root/data/b.txt rsync@172.16.16.10::backup Password: sending incremental file list b.txt 6 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1) sent 98 bytes received 43 bytes 56.40 bytes/sec total size is 6 speedup is 0.04
源同步服务器上,同步本端目录内容到目标服务器,用sersync:
将 sersync2.5.4_64bit_binary_stable_final.tar.gz 文件解压后(主要用sersync、inotify)
[root@ansible-server ~]# cd sersync/ [root@ansible-server sersync]# ll total 1960 drwxr-xr-x. 2 root root 6 Mar 8 03:07 GNU-Linux-x86 drwxrwxrwx. 5 rsync rsync 4096 Mar 14 2010 inotify-tools-3.14 -rw-r--r--. 1 root root 358772 Mar 7 10:31 inotify-tools-3.14.tar.gz -rw-r--r--. 1 root root 10838 Mar 7 10:31 README.md drwxrwxr-x. 10 root root 4096 Mar 7 11:16 rsync-3.1.1 -rw-r--r--. 1 root root 890124 Mar 7 10:31 rsync-3.1.1.tar.gz
为了方便管理调整目录结构:
[root@ansible-server sersync]# tree /usr/local/sersync/ /usr/local/sersync/ ├── bin │ └── sersync ├── conf │ ├── conf-www.xml │ ├── confxml.xml │ └── confxml.xml-bak └── log ├── rsync_fail_log └── rsync_fail_log-www
mv GNU-Linux-x86/sersync /usr/local/sersync/bin/
mv GNU-Linux-x86/confxml.xml /usr/local/sersync/conf
[root@ansible-server sersync]# cat /usr/local/sersync/conf/confxml.xml <?xml version="1.0" encoding="ISO-8859-1"?> <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="/tmp"> #需要监听的本地目录 <remote ip="172.16.16.10" name="backup"/> #目标及目标路径的模块 <!--<remote ip="192.168.8.39" name="tongbu"/>--> <!--<remote ip="192.168.8.40" name="tongbu"/>--> </localpath> <rsync> <commonParams params="-artuz"/> <auth start="true" users="rsync" passwordfile="/etc/rsync.pwd"/> #目标服务器的rsync认证用户及密码,本端保存的认证密码文件 <userDefinedPort start="true" port="873"/><!-- port=874 --> #监听端口 <timeout start="false" time="100"/><!-- timeout=100 --> <ssh start="false"/> </rsync> <failLog path="/usr/local/sersync/log/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>