您的位置:首页 > 运维架构 > Linux

linux下通过rsync同步数据

2010-12-15 17:02 281 查看
好久没来写点东西了,最近做一项目时有一功能是后台创建模块然后预览效果,涉及到的问题就是两套不同的程序,两台不同的主机(当然也可以是一台主机)数据同步问题,说白了就是将后台创建的模块文件推送到前台相应目录下。

解决办法就用到了linux的shell命令rsync,说实话测试了好多次才成功,所以现在以文字的形式来记录,自己备忘也希望可以帮助正在做这种功能而无从下手的同学。

环境:两台linux主机。我使用的192.168.84.130(服务端),192.168.84.134(客户端)

使用命令:/user/bin/rsync

一般现在的linux都自带rsync命令,如果没有请自行安装。(http://rsync.samba.org/)

服务器端也就是192.168.84.130需要配置/etc/rsyncd.conf,一般这个文件是没有的,需要手动创建,编辑内容:

#

# Version: 1.0

# Maintainer :wangzhanu@163.com <Network System Dept.>

#

# Rsync daemon configuration file.

#

######公共定义#############

uid = wangzhan #目录的创建者

gid = wangzhan #目录所属的组

use chroot = no

max connections = 100

pid file = /var/run/rsyncd.pid

log file = /var/log/rsync

list = no #不允许列文件

strict modes = no

######定义自己需要的模块##############

[publish_zt] #认证的模块名,在client端需要指定

uid = wangzhan #目录的创建者

gid = wangzhan #目录所属的组

path = /data1/www #需要做镜像的目录,比如客户端传文件到服务器端,就会进到这个目录

use chroot = no

read only = no

list = yes

hosts allow = 192.168.84.134 #允许的ip地址域,就是客户端要连接服务器,必须在此把客户端ip写到此处

保存退出,配置文件定义ok。

然后启动rsync

root@ubuntu:/data1/www#rsync --daemon --config=/etc/rsyncd.conf

接下来就是在服务器端创建镜像保存目录,也就是rsyncd.conf中定义的path目录:/data1/www

这里有一个关键点就是www目录的拥有者以及组必须是:chown wangzhan:wangzhan /data1/www

你问我为什么?因为在rsyncd.conf中的[publish_zt]模块中已经定义了uid和gid就是wangzhan。

服务器端的工作完成了,现在就是客户端了。

1.客户端推送文件到服务器端

===========================

wangzhan@ubuntu:/data1/www$ /usr/bin/rsync -rut --exclude=/.* /data1/www/xx.php 192.168.84.130::publish_zt/guoqing/

就是将客户端/data1/www中的xx.php文件推送到服务器端/data1/www/guoqing/xx.php,用到程序当中的话,xx.php是

可以变化的,guoqing这个文件夹也可以使变化的,也就是说在程序当中改动他们就可以实现推送不同的文件到服务器端。

2.从服务器端下载文件到客户端

===========================

wangzhan@ubuntu:/data1/www$ /usr/bin/rsync -ave ssh wangzhan@192.168.84.130:/data1/www/ /data1/www/

就是将服务器端/data1/www/目录下的文件下载到客户端/data1/www/目录中

文到此处结束,请各位同学自行测试,如发现问题请不吝赐教!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: