查看完整版本: RSYNC学习

398641310 2008-1-24 14:57

RSYNC学习

服务器之间常常要保持些文件或目录的一致,比如一些大的软件下载网站,它们通常使用多台服
(BQ1BOH-k1_ 务器来提供下载服务。当一台服务器上的文件更新后,其它的服务器也需要更新,而且在更新的时
K#\}RQ/Q(Y5W1e#C\m;l3b 候应该是只对新增或是修改过的文件进行更新,否则会造成网络带宽和时间的浪费。rsync就是能有
l-V`o/g/^d!S9h 效的保持文件及目录的一致的优秀软件。 0i m7?+I ]?
  rsync,remote synchronize l_)T#?3u4s%z*M
  顾名思意就知道它是一款实现远程同步功能的软件,它在同步文件的同时,可以保持原来文件的
J8Toh8]d 权限、时间、软硬链接等附加信息,而且可以通过ssh方式来传输文件,这样其保密性也非常好,另 q'd.fvx3o)D`
外它还是免费的软件。rysnc的官方网站:[url]http://rsync.samba.org/[/url],可以从上面得到最新的版本。 -h8F*C3r~6NNO0Q
当然,因为rsync是一款如此有用的软件,所以很多Linux的发行版本都将它收录在内了,
Dq$u7\3y#Ri.x%vJ    Tl-R SOvFgY
查看服务器的rsync     3Cn I,Kc5I{
[root@localhost etc]# rpm -qa rsync 5`bY'ZpoMrl g
rsync-2.6.3-1
{E Q{2DB7c6D'Bj [root@localhost etc]#   d5c q9D@j
(我们公司用的版本是2。6。3-1  最新的是[root@localhost src]# ls GHnYX{
rsync-2.6.9  rsync-2.6.9.tar.gz)
:^6zT/e(w9A} gqs'F 5g"vZ[)hZa;l*f#f
实验:对 file service /var/rsynctest   备份到 backup service  /backup/backup  
*kaAcBdOM
0n B.`2a Z1@ Rsync 的服务器端配置 (FILE SERVICE)
L k.V2gA4?'kJL\ G(^G!Ly7pe2N
1: 编辑 /etc/rsyncd.conf (记得不要忘记这个D ,曾经因为这个导致服务无法启动)
:sWA r7g%q Ls;D/H uid = root  (曾经实验过用nobody来代替 但经常因为权限不够导致无法服务器和客户端无
j A"ES&I7D0u gid = root     法联动)
$]x'p JT0I4uS use chroot = no A1@:Q t F
max connections = 4  ------最大可以有多少台clent与其相连
`Ye-R5li pid file = /var/run/rsyncd.pid
z(F W \1r,r lock file = /var/run/rsync.lock   (此3项记录了RSYNC服务的运行状态,这3个需要手动建
1N[`@Yl log file = /var/log/rsyncd.log     立,出问题的时候可以查看LOG 来调试)
6Wc m"Up7C&Z   CSl ^1nlx(X
[www]
q2hD1y;c{ path = /var/rsynctest    -----------要备份的数据的路径 0zy;YQ"MBQ
ignore errors GS Jq1@!Z'Y&T6u
read only =yes
iV:srZgh list = no
_ TQJ-]4}-fK hosts allow = 10.0.0.16   ---------准许接入的主机的IP (其实还可以写上hosts denly + ip 示不准许接入的主机) n$[Yu^z@
auth users = backup 9HM6cW3rGw!gIH q O
secrets file = /etc/backserver.pass  -----存放密码的文件 MJ5O;y#U'[._G

PUgw P HI1S^/]2? 2:编辑存放密码的文件 l/CQ-Mw
     4Y-gt*z7kYS @K
vi /etc/backserver.pass zY/Q%g0y;`)X
backup:123456 :a!`3_ e'_4R\4l
对密码文件修改权限   
5D,L5Y1G*g.u Y$g   Chmod 600 /etc/backserver  一定要注意的是服务器和CLENT端的密码文件的权限要一致, 曾经因为不一致导致出错 ,权限越低越安全 600 属于中等的权限,400 比较不错
.V)R;@hiPyvi [root@localhost ~]# ll /etc/backserver.pass  8F&s&|r)e,{"P)|
-rw-------  1 root root 14 Jul 27 16:03 /etc/backserver.pass )y)`KE5k0Fv
3:启动rsync
2e(A"etD8w3o    /usr/bin/rsync --daemon   U:ou%dLl4A4h3dfW
  由于本服务器是用RPM包安装的方式。在安装的时候已经默认建立了/etc/xinetd.d/rsync文件 此文件是启动服务的必要条件。必须要有的 H?6I4P`#{g2Z
   
-QI+B5Uv#@ service rsync @4jW,eJ&h3za
{
*cA1A a)BY9r*b?5r disable = no
$C-f wjPy$_3^ socket_type= stream '[ o%}ab.ij
wait = no w/sDl^b
user = root
o8ygw;gJ$E server = /usr/bin/rsync
+W|E2E9lm&ZZ server_args= --daemon JJ+\*?"fL
log_on_failure += USERID DH)@sk2}j&Y
}
1[wT zng*D w%A}1Hd                   
1aH6t2N+Rfu.VN;| 启动后查看 netstat –nl  
Tx6\0R XM#a tcp        0      0 0.0.0.0:873             0.0.0.0:*                   LISTEN      /_%ob5s;\2x2uBo

`:N|B"m'\%e,O#p rsync 启动是用的873端口。如果客户端 出现rsync: failed to connect to 10.0.0.11: No route to host (113)  这个就可能是iptables 把服务挡住了。这种情况关掉防火墙 ,或者修改iptables 具体怎么修改需要再研究
u~|B)oW     0c{F)r t~|g1C@n}0l

o%@`\OWV _zPaV\[l@~^D!E
对客户端的配置 !K"|O$bVn)T
;K2m cE(tN1?
客户端已经用RPM的方式安装完毕了。而且客户端不需要开启服务,主要是语法要掌握 *ny"|LvB8Ol
/usr/bin/rsync -vzrtopg --delete --progress [email]backup@10.0.0.11[/email]::www /backup/backup/ --password-file=/etc/backserver.pass (Y\nzA fhdEr
上面这个命令行中-vzrtopg里的v是代表verbose(详细),z是代表zip(压缩),r是代表recursive(递归),topg都是保持文件原有属性如属主、时间的参数。--progress是指显示出详细的进度情况,--delete是指如果服务器端删除了这一文件,那么客户端也相应把文件删除,保持真正的一致。 P&M V s(L1Ph!\4Z {G
[email]backup@10.0.0.11[/email]::www   backup 是服务器端的 rsyncd.conf 指定的用户名,www是指定的模块的名字。IP和模块名字之间加的是:: 双号  /backup/backup/是要将备份文件的放置的路径 4vA1Y5K2j&LdQ'x
  --password-file=/etc/backserver.pass   备份中调用的密码文件路径 1gpLu },Qx
Vi /etc/backserver.pass  !r^:JZx*^#d ?+Q
  123456                                   (注意,这个地方只有密码,不加用户不能些成backup:123456 曾经在这纠缠了很长时间 ,和SERVER端不一样,SERVER端的密码文件配置应该是backup:123456的形式,两端的密码文件都应该是600权限最好) yC,lF.Ela5rf&p

5Di8K'}+r j df*h ^H*Z0b2s,R

/t%[6P g R f P1z
^`6X f{U7{YRn1[ 简单配置如上,今后还会要写一个cron脚本。,让其自行备份。附客户端备份语法 y.Q0D1N\
   
i2{2UAQD^y #!/bin/sh MzDV-vq
rsync -tvazurp --delete --progress [email]backup@10.0.0.11[/email]::media /backup/ufeelmed "B5SZ)^ l7|3_
ia --password-file=/etc/backserver.pass KE(_9Dmn
root@localhost ~]# crontab -l
Z:O'k&x;s `5LG 1 1 * * * /usr/local/squid/var/spite.sh
C4T!fq]-pg8Y4Yx7AM 1 2 * * * /backup/script/rsync.sh
+Yj`0oK%s:p+v 1 9 * * * /backup/script/rsync.sh
"E/f }{z0`8o5[!| 1 15 * * * /backup/script/rsync.sh o6w7c2{|.XM \
1 20 * * * /backup/script/rsync.sh k| k*_@ ^%Q8]
1 23 * * * /backup/script/rsync.sh Sfg5Bq
0 8 * * * ntpdate 210.72.145.44 'w\ \ sA ^2z2g
5xgz8R'? j
在配置完rsync服务器后,就可以从客户端发出rsync命令来实现各种同步的操作。rsync有很多功能选项,下面就对介绍一下常用的选项: !A BnW^MzJN
  rsync的命令格式可以为:
i'B.B/l ],Gb,[   1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
5N0vSk {gD   2. rsync [OPTION]... [USER@]HOST:SRC DEST
J(T:a[CcWM   3. rsync [OPTION]... SRC [SRC]... DEST
9V7WuL%|yh   4. rsync [OPTION]... [USER@]HOST::SRC [DEST] V2l#d`#L,Ar3v.B
  5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
!A R#c(^"A   6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
S_ b/yw   rsync有六种不同的工作模式:
m+i"}NHjFq7j   1. 拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
5e*h7B1zb F(l[R4\*w   2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
x%Tf Kd X S   3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。 6o]bt4~4\p,]K
  4. 从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。 d*~`*~,|
  5. 从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。 9IS\8hq(tu
  6. 列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。
页: [1]
查看完整版本: RSYNC学习