Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1021003
  • 博文数量: 361
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 1759
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-22 23:18
个人简介

学海无涯 个人blog lnmps.com 新站

文章分类

全部博文(361)

文章存档

2017年(1)

2015年(2)

2014年(55)

2013年(303)

分类: LINUX

2013-03-12 11:30:26

rsync是一个数据镜像及备份工具,具有可使本地和远程两台主机的文件,目录之间,快速同步镜像,远程数据备份等功能。在同步过程中,rsync是根据自己独特的算法,只同步有变化的文件,甚至在一个文件里只同步有变化的部分,所以可以实现快速的同步数据的功能

一、服务端

1.获取相关rpm

yum install --downloadonly --downloaddir=/rsync rsync   #远程镜像rpm

yum install --downloadonly --downloaddir=/rsync xinetd  #守护进程

2.验证是否安装了rysnc程序包 rpm –qa|grep rsync

3.删除并安装最新rysnc程序包 rpm –e  `rpm –qa|grep rsync`  rpm –ivh 安装包

4.创建公钥并远程拷贝到相应的主机上

ssh-keygen -t rsa

scp /root/.ssh/id_rsa.pub  #拷贝公钥到相应目标主机之上

5.验证目标主机是否可以正常登陆ssh ip (一般情况下是正常的)

6.获取wget inotify介质

7.在服务端安装inotify rpm –ivh inotify-tools-3.14-1.el5.i386.rpm介质

8.测试镜像工具的可用性功能rsync  -aSvH /home/

# a 等同于 -rlptgoD 归档模式,就是保持文件所有属性、权限不变
#S
有效的处理零散文件
#v verbose
模式
#H
保持hard links

9.配置安装xinetdrsync的启动管理进程

10.分别在每个服务器上的xinetd配置项中允许xinetd(超级守护进程)管理rsync服务

cd /etc/xinetd.d

vi rsync修改内容如下所示:

service rsync
{
disable = yes
修改为disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID

……………………………………….

}

11.服务端的详细设置

a)编写服务器端脚本

#add by fengzhanhai

#it used by startup rsync

nohup /root/mon/rsync.sh &

[root@mysql1 mon]# cat rsync.sh

#create by fengzh

#it used by monitor file

#create by fengzh

#!/bin/bash

src=/webapp/tomcat6/webapps/MMS/uploadFile/

des=/webapp/tomcat6/webapps/sdmp/uploadFile/

#des=uploadFile

host="10.0.211.2 10.0.211.3"

#host="ip1 ip2 ip3"

/usr/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' \

-e modify,delete,create,attrib $src | while read file;

do

for ip in $host

do

rsync -vzrtopg --delete --progress $src root@$ip:$des 2>&1>/dev/null

#rsync -aSvH --delete $src root@$ip:$des

done

echo "${file} was rsynced on `date`">>/etc/mon/mon.log

done

b)启动脚本

#add by fengzhanhai

#it used by startup rsync

nohup /root/mon/rsync.sh &

二、客户端参数设置

12.客户端参数设置

a)touch 一个rsyncd.conf文件 etc目录下

b)添加如下内容:

uid=root

gid=root

use chroot=no

max connections=5

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsync.lock

log file=/var/log/rsyncd.log

[sdtv]

path=/mnt/sdtv/

comment=update

ignore errors

read only=no

list=no

hosts allow=192.168.202.0/255.255.255.0

auth users=root

uid=root

gid=root

13.开机自启动

#echo "rsync --daemon" >> /etc/rc.local #开机自启动

#chkconfig rsync on

14.启动远程镜像 参见13步骤。

三、视野拓展

生产SSH KEY(目的是为了自动实时同步时候不需要输入密码): ssh-keygen -t rsa 这个命令生成一个密钥对:id_rsa(私钥文件)和id_rsa.pub(公钥文件)。默认被保存在/root/.ssh/目录下。注:在生成密钥对会提示输入密码,若什么都不输入直接回车,则表示没有密码,所以我们这里直接回车。

# scp /root/.ssh/id_rsa.pub root@192.168.1.128:/root/.ssh/

# cat /root/.ssh/id_rsa.pub >> authorized_keys

#/etc/init.d/sshd restart 编写脚本 vim /usr/local/inotify/rsync.sh #!/bin/sh   srcdir="/home"

# scp /root/.ssh/id_rsa.pub root@192.168.1.128:/root/.ssh/ # cat /root/.ssh/id_rsa.pub >> authorized_keys

#/etc/init.d/sshd restart

编写脚本 vim /usr/local/inotify/rsync.sh

 #!/bin/sh  

srcdir="/home"

ip="192.168.1.128 10.10.50.141"  #多台服务器可以自己添加IP  

dstdir="/home"  /usr/local/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y-%H:%M' --format '%T %w%f' -e modify,delete,create,attrib ${srcdir} \   |

while read file

do

for i in $ip               

do                      

rsync -aqztH --delete --progress ${srcdir} root@${i}:${dstdir}                  

echo "${src} was rsynced"        

#echo "-----------------------------------------------------"    

done  

done

要排除同步某个目录时,为rsync添加--exculde=PATTERN参数,注意,路径是相对路径.

脚本相关注解:
m 是保持一直监听
r 是递归查看目录
q 是打印出事件~
e create,move,delete,modify
监听 创建 移动 删除 写入 事件
rsync -aHqzt $SRC $DST
-a
存档模式
-H
保存硬连接
-q
制止非错误信息
-z
压缩文件数据在传输
-t
维护修改时间
-delete
删除于多余文件

.

阅读(311) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~