码迷,mamicode.com
首页 > 其他好文 > 详细

rsync

时间:2014-06-10 23:43:10      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:服务器   守护   项目   中心   

remote sync

rsync有四种工作模式:
第一个是shell模式,也称为本地模式;
第二个是远程shell模式,其利用SSH执行底层连接和传输;
第三个是列表模式,其工作方式与ls相似,即列出源的内容;-nv
第四个模式是服务器模式。rsync以守护进程方式运行,接收文件传输请求。在使用时,可以使用rsync命令把文件发送给守护进程,也可以向它请求文件。服务器模式非常适合创建中心备份服务器或项目存储库。

Rsync常用选项:
-v, --verbose 详细模式输出
-q, --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
-a, --archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rlptgoD
-r, --recursive 对子目录以递归模式处理
-l, --links 保留符号链结
-p, --perms 保留文件权限
-t, --times 保留文件时间戳
-g, --group 保留文件属组信息
-o, --owner 保留文件属主信息
-D, --devices 保留设备文件即特殊文件信息

-e, --rsh=COMMAND 指定替代rsh的shell程序
-z, --compress 对备份的文件在传输时进行压缩处理

-n执行试运行。试运行 会预览对每个文件的操作,但是不会实际复制数据。当确认所有设置是正确的之后,***-n选项,再次运行命令。

还可以使用两个选项监视传输的状态:--progress和--stats。
--progress 显示进度条
--stats 显示如何执行压缩和传输

--delete ***目标目录内多余的文件

注意:rsync命令使用中,如果源参数的末尾有斜杠,就会复制指定目录的内容,而不复制目录本身。目标参数末尾的斜杠没有作用。如下面的命令会把/mydata/data目录中的所有文件复制到/backups目录中。
# rsync /mydata/data/ /backups/

可以同步两台服务器上不同目录

rsync –rl /www/htdocs host:/www 把htdocs目录同步到远程主机www目录下 用法类似scp

rsync + inotify 文件数量不是太多 文件不是太大 场景

案例

本案例实现监控原主机上指定目录中的所有文件变化,并将变化实时同步至目标主机的指定目录中;所用主机及相关目录如下:

源主机:centos 6.4 (x86_64),192.168.200.131, 文件所在的目录为/www/htdocs;

目标主机:centos 6.4 (x86_64),192.168.200.201, 文件所在的目录为/www/htdocs;

设定源主机

1 安装相关软件

安装epel源

yum install inotify-tools ,rsync

mkdir –p /www/htdocs

2 为源主机的rsync提供口令文件

echo ‘redhat’ > /etc/rsync.passwd

chmod 600 /etc/rsync.passwd

3建立脚本 htdocsync.sh 通过inotifywait 监控目标文件上相应事件,并触发同步过程

Vim htdocsync.sh

#!/bin/bash

#

DESTHOST=192.168.200.201

DESTHOSTDIR=/www/htdocs/

SRCDIR=/www/htdocs/

inotifywait -mr --timefmt ‘%d/%m/%y %H:%M‘ --format ‘%T %w %f‘ -e close_write,modify,delete,create,attrib $SRCDIR | while read DATE TIME DIR FILE; do

FILECHANGE=${DIR}${FILE}

rsync -avz --password-file=/etc/rsync.passwd $SRCDIR htdocsuser@${DESTHOST}::htdocs &>/dev/null && \

echo "At ${TIME} on ${DATE}, file $FILECHANGE was backed up via rsync" >> /var/log/websync.log

done

chmod u+x htdocsync.sh

bash htdocsync.sh &

开机自动启动

echo ‘bash /roo/htdocsync.sh &’ >> /etc/rc.d/rc.local

设定目标主机

1 安装相关软件

yum install rsync xinetd

mkdir –p /www/htdocs

2 提供配置文件 默认没有

Vim /etc/rsyncd.conf

# Section 1: Global settings

uid = nobody

gid = nobody

use chroot = no

max connections = 3

strict modes = yes

pid file = /var/run/rsyncd.pid

log file = /var/log/rsyncd.log

# Section 2:Directory to be synced

[htdocs]

path = /www/htdocs

ignore errors = yes

read only = no

write only = no

hosts allow = 192.168.200.0/24

hosts deny = *

list = false

uid = root

gid = root

auth users = htdocsuser

secrets file = /etc/rsync.passwd

3 提供口令文件

Vim /etc/rsync.passwd

htdocsuser:redhat

chmod 600 /etc/rsync.passwd

4 配置服务 开机启动

chkconfig rsync on

chkconfig xinetd on

service xinetd start

netstat –tnlp | grep 873

tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 3653/xinetd

rsync,布布扣,bubuko.com

rsync

标签:服务器   守护   项目   中心   

原文地址:http://168322.blog.51cto.com/158322/1423888

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!