<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[[人个原创]使用Linux的rsync命令实现： 网站镜像和代码分发及备份]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Tue, 06 Sep 2011 07:45:43 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	启动rsyncd的命令行：<br/><textarea name="code" class="php" rows="15" cols="100">
kill `cat /var/run/rsyncd.pid`
rm -Rf&nbsp;&nbsp;/var/run/rsyncd.pid
/usr/bin/rsync --daemon /etc/rsyncd.conf
</textarea><br/><br/><textarea name="code" class="html" rows="15" cols="100">
rsync&nbsp;&nbsp;-rp --bwlimit=3000 --progress --exclude &quot;logs/&quot; /usr/local/push_endsvr/ root@$&#123;ip&#125;:/usr/local/spush_endsvr/
</textarea><br/><br/>理解：从&#123;ip&#125;这台机器上用root用户连接远程rsync服务器和本机需要同步的目录/usr/local/push_endsvr 同步，<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并作限定速度为3000KB，不需要同步logs目录！<br/><br/>关键参数解释：<br/>rsync --help&amp;#124;grep bwlimit<br/>&nbsp;&nbsp;&nbsp;&nbsp; --bwlimit=KBPS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;limit I/O bandwidth; KBytes per second<br/>&nbsp;&nbsp;&nbsp;&nbsp; --progress&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;show progress during transfer<br/>&nbsp;&nbsp;&nbsp;&nbsp; --include=PATTERN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; don&#039;t exclude files matching PATTERN<br/>&nbsp;&nbsp;&nbsp;&nbsp; --port=PORT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; specify double-colon alternate port number<br/><br/>实际测试情况如下：<br/><textarea name="code" class="html" rows="15" cols="100">
root@10.6.208.188:~/elink# rsync&nbsp;&nbsp; --bwlimit=3000 --progress --port=873&nbsp;&nbsp;/root/elink/* elink@10.6.208.188:elink&nbsp;&nbsp;
elink&#039;s password: 
jackxiang.txt
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;11 100%&nbsp;&nbsp;&nbsp;&nbsp;0.00kB/s&nbsp;&nbsp;&nbsp;&nbsp;0:00:00 (xfer#1, to-check=0/1)

sent 105 bytes&nbsp;&nbsp;received 42 bytes&nbsp;&nbsp;32.67 bytes/sec
total size is 11&nbsp;&nbsp;speedup is 0.07
</textarea><br/>里面是配置了从/root/elink这个目录向：/home/elink这个目录推送，后查看目录/home/elink的层次结构发现如下：<br/><textarea name="code" class="html" rows="15" cols="100">
root@10.6.208.188:/home/elink# ls
elink
root@10.6.208.188:/home/elink# ls elink 
elink
</textarea><br/>说明/root/elink/jackxiang.txt 中包含目录也给推送到了/home/elink下，形成/home/elink/elink/jackxiang.txt<br/><br/>说下配置：<br/>首先，看下RpM包，你也可以自己安装，<br/>张宴兄弟有两篇文章都是讲这个的：<br/>http://blog.s135.com/post/259/<br/>http://blog.s135.com/post/265/<br/>我是机器本来就有这个RPM，于是，<br/>root@10.6.208.188:~# rpm -ql rsync-2.6.8-36.8<br/><textarea name="code" class="html" rows="15" cols="100">
/etc/init.d/rsyncd
/etc/logrotate.d/rsync
/etc/rsyncd.conf&nbsp;&nbsp;--------------------------------------------------&gt; [配置文件]
/etc/rsyncd.secrets
/etc/xinetd.d/rsync
/usr/bin/rsync&nbsp;&nbsp;&nbsp;&nbsp; ---------------------------------------------------&gt;[启动文件]
/usr/bin/rsyncstats
/usr/sbin/rcrsyncd
/usr/sbin/rsyncd
/usr/share/doc/packages/rsync
/usr/share/doc/packages/rsync/COPYING
/usr/share/doc/packages/rsync/README
/usr/share/doc/packages/rsync/tech_report.ps
/usr/share/doc/packages/rsync/tech_report.tex
/usr/share/man/man1/rsync.1.gz
/usr/share/man/man5/rsyncd.conf.5.gz
</textarea><br/><br/>在安装目录中找到rsync.conf:/etc/rsyncd.conf<br/>vi /etc/rsyncd.conf<br/><textarea name="code" class="html" rows="15" cols="100">
uid=elink
gid=elink
max connections=10
use chroot=no
log file=/var/log/rsyncd.log
pid file=/var/run/rsyncd.pid
lock file=/var/run/rsyncd.lock
hosts allow=172.25.38.31/10.6.208.188

[elink]
path=/home/elink
comment = my htdocs
ignore errors
read only = no
</textarea><br/>我是自己一台机器上做的测试，所以把这个自己的机器也给加上即可，才能一台机器上实现rsync同步喔。<br/>否则就是：<br/>warning: Connecting to 10.6.208.188 failed: Connection Refused！ 这种情况会出现。<br/>添加这个用户的帐号和组：<br/>这个不明白可以看下这个URL：http://www.jackxiang.com/post/2581/<br/><textarea name="code" class="shell" rows="15" cols="100">
groupadd elink -g 48
useradd elink -u 48 -g 48
chmod +w /home/elink
chown elink:elink /home/elink
</textarea><br/><br/>启动和关闭该服务：<br/>1）启动rsync服务器端<br/>/usr/bin/rsync --daemon<br/>Rsync server会打开一个873 端口，等待客户端去连接。<br/>加入inetd.conf<br/>编辑/etc/services，加入rsync 873/tcp，指定rsync的服务端口是873。<br/>编辑/etc/inetd.conf，加入rsync stream tcp nowait root <br/>启动和判断是否成功，如下：<br/><textarea name="code" class="html" rows="15" cols="100">
/bin/rsync rsync --daemon
root@10.6.208.188:/home# netstat -atlunp&amp;#124;grep 873
tcp&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 0.0.0.0:873&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0.0.0.0:*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LISTEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;26885/rsync
</textarea><br/>2）如何关闭服务，停止：<br/><textarea name="code" class="html" rows="15" cols="100">
root@10.6.208.188:/home# ps aux&amp;#124;grep rsync
root&nbsp;&nbsp;&nbsp;&nbsp; 26885&nbsp;&nbsp;0.0&nbsp;&nbsp;0.0&nbsp;&nbsp; 3780&nbsp;&nbsp; 940 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ss&nbsp;&nbsp; 16:53&nbsp;&nbsp; 0:00 /usr/bin/rsync --daemon
root@10.6.208.188:/home# kill -9 26885
</textarea><br/>于是：<br/>rsync&nbsp;&nbsp;-rp --bwlimit=3000 --progress --exclude &quot;logs/&quot; /home/elink/ elink@$10.6.208.188:/home/elink/ <br/>如需要加上密码，则为elink用户设置一个密码。<br/><textarea name="code" class="html" rows="15" cols="100">
passwd elink

</textarea><br/>重启动这个rsync的服务，<br/>运行命令时会提示输入密码:<br/>实际测试情况如下：<br/><textarea name="code" class="html" rows="15" cols="100">
root@10.6.208.188:~/elink# rsync&nbsp;&nbsp; --bwlimit=3000 --progress --port=873&nbsp;&nbsp;/root/elink/ elink@10.6.208.188:/home/elink/
elink&#039;s password: 
skipping directory /root/elink/.

sent 21 bytes&nbsp;&nbsp;received 20 bytes&nbsp;&nbsp;5.47 bytes/sec
total size is 0&nbsp;&nbsp;speedup is 0.00
</textarea><br/><br/>最后,<br/>实际用时可能还会加入Crontab：<br/>每半个小时同步一下<br/><textarea name="code" class="html" rows="15" cols="100">
crontab -u root -e
0,30 * * * * 写成一个shell去执行。
</textarea><br/><br/>可能会出现问题：<br/><textarea name="code" class="html" rows="15" cols="100">
root@darkstar:~#&nbsp;&nbsp;rsync&nbsp;&nbsp; --bwlimit=3000 --progress --port=873&nbsp;&nbsp;/root/elink/* elink@10.6.208.188:elink
Host key not found from database.
Key fingerprint:
xuror-ledab-buhim-zohok-tanop-cyrig-tysac-gyhyp-refan-semim-pyxex
You can get a public key&#039;s fingerprint by running
% ssh-keygen -F publickey.pub
on the keyfile.
warning: tcsetattr failed in ssh_rl_set_tty_modes_for_fd: fd 5: Interrupted system call
</textarea><br/>加新的参数解决问题：以下参考来自，http://www.jackxiang.com/post/3121/<br/><textarea name="code" class="html" rows="15" cols="100">
 root@darkstar:~# strace -o t&nbsp;&nbsp;rsync&nbsp;&nbsp; --bwlimit=3000 --progress --port=873&nbsp;&nbsp;/root/elink/* elink@10.6.208.188:elink
Host key not found from database.
Key fingerprint:
xuror-ledab-buhim-zohok-tanop-cyrig-tysac-gyhyp-refan-semim-pyxex
You can get a public key&#039;s fingerprint by running
% ssh-keygen -F publickey.pub
on the keyfile.
Are you sure you want to continue connecting (yes/no)? yes
Host key saved to /root/.ssh2/hostkeys/key_36000_10.6.208.188.pub
host key for 10.6.208.188, accepted by root Tue Sep 06 2011 20:25:10 +0800
elink&#039;s password: 
iptables-1.3.1.tar.bz2
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;180670 100%&nbsp;&nbsp; 10.08MB/s&nbsp;&nbsp;&nbsp;&nbsp;0:00:00&nbsp;&nbsp;(1, 100.0% of 1)

sent 180787 bytes&nbsp;&nbsp;received 46 bytes&nbsp;&nbsp;32878.73 bytes/sec
total size is 180670&nbsp;&nbsp;speedup is 1.00
</textarea>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [人个原创]使用Linux的rsync命令实现： 网站镜像和代码分发及备份]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>