http://www.osyunwei.com/archives/7447.html
源服务器 10.45.12.190 owl7
目标服务器 10.251.209.211 owl-test
目的 owl7上的/i/dir1目录实时同步到owl-test上的/i2/dir1
一 配置目标服务器 owl-test 上安装rsync服务端
yum -y install xinetd rsync
1、关闭SELINUX
vi /etc/selinux/config
SELINUX=disabled #增加
setenforce 0 #立即生效
2、开启防火墙tcp 873端口
owl7上安装rsync
yum -y install xinetd rsync
配置验证
/etc/rsync.pass
a
3. 配置目标服务器 owl-test
vi /etc/xinetd.d/rsync
disable = no #修改为no
4.创建rsyncd.conf配置文件
# Globel setting
uid = root
gid = root
use chroot =no
max connectiongs = 0
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
hosts allow = 10.45.12.190 #设置多个,用逗号隔开
# Folder Setting,Permit add more folder
[images]
path = /i2
comment = images # 与上边方括号中一样
uid = root
gid = root
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass
5. 创建用认证文件 格式 用户名:密码
cat /etc/rsync.pass
rsyncuser:a
chmod 600 /etc/rsyncd.conf
chmod 600 /etc/rsync.pass
二. 配置源服务器 owl7
1、关闭SELINUX
2、开启防火墙tcp 873端口
3. 安装Rsync客户端
yum -y install xinetd rsync
4. 创建用认证文件 格式 用户名:密码
cat /etc/rsync.pass
rsyncuser:a
chmod 600 /etc/rsync.pass
5. 测试同步
使用配置文件验证,需要输入密码
rsync -avHz --port=873 --progress --delete /i/dir1 rsyncuser@10.251.209.211::images --password-file=/etc/rsync.pass
使用ssh验证
rsync -avHz --port=873 --progress --delete -e 'ssh -p 22' /i/dir1 root@10.251.209.211:/i2
--exclude '' 排除目录 可多次使用
rsync -avHz --port=873 --progress --delete --exclude 'test' --exclude 'formal' -e 'ssh -p 22' /i root@10.251.209.211:/
实时同步配置
三. 源服务器安装inotify-tools http://www.osyunwei.com/archives/7435.html
方法一
yum -y install inotify-tools
方法二
wget --no-check-certificate https://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
tar zxvf inotify-tools-3.14.tar.gz
cd inotify-tools-3.14
./configure --prefix=/opt/inotify
make && make install
创建脚本,实时触发rsync进行同步
========================================================================================
#!/bin/sh
srcdir=/i/dir1
dstdir=/i2
excludedir=/opt/inotify/exclude.list
rsyncuser=rsyncuser
rsyncpassdir=/etc/rsync.pass
dstip="10.251.209.211"
for ip in $dstip
do
rsync -avHz --port=873 --bwlimit 10240 --delete -e 'ssh -p 22' $srcdir root@$ip:$dstdir
done
/opt/inotify/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,modify,delete,create,attrib,move $srcdir | while read file
do
for ip in $dstip
do
rsync -avH --port=873 --bwlimit 10240 --progress --delete -e 'ssh -p 22' $srcdir root@$ip:/i2
echo " ${file} was rsynced" >> /tmp/rsync.log 2>&1
done
done
========================================================================================
扩展阅读:
inotify参数
-m 是保持一直监听
-r 是递归查看目录
-q 是打印出事件
-e create,move,delete,modify,attrib 是指 “监听 创建 移动 删除 写入 权限” 事件
========================================================================================
rsync参数 http://www.jb51.net/article/74589.htm
-a 就相当于使用了-rlptgoD -a选项的学名应该叫做archive option,中文叫做归档选项
-H 同步硬连接
-v --verbose 输出更多信息 增加越多的v,就可以获得越多的日志信息
-q --quiet 精简输出模式
-c, --checksum 打开校验开关,强制对文件传输进行校验
–delete:如果源端没有此文件,那么目的端也别想拥有,删除之
-P --progress rsync 会显示出传输进度信息 给无聊的用户看的东西
-z 压缩选项
-r 同步文件夹 即recursive(递归的、循环的
-l rsync会完全保持软链接文件类型,原原本本的将软链接文件复制到目的端,而不会“follow link”到指向的实体文件。
-p 这个选项的全名是“perserve permissions”,顾名思义,就是保持权限。
-g 选项和 -o 选项 这两个选项是一对,用来保持文件的属组(group)和属主(owner),作用应该很清晰明了。不过要注意的一点是,改变属主和属组,往往只有管理员权限才可以
-D 原文解释是“preserve devices(root only)”,从字面意思看,就是保持设备文件的原始信息
[--exclude选项和--exclude-from选项]
如果你不希望同步一些东西到目的端的话,可以使用–exclude选项来隐藏,rsync还是很重视大家隐私的,你可以多次使用–exclude选项来设置很多的“隐私”。
如果你要隐藏的隐私太多的话,在命令行选项中设置会比较麻烦,rsync还是很体贴,它提供了–exclude-from选项,让你可以把隐私一一列在一个文件里,然后让rsync直接读取这个文件就好了
--partial 断点续传
-b, --backup 创建备份,也就是对于目的已经存在有同样的文件名时,将老的文件重新命名为~filename。可以使用--suffix选项来指定不同的备份文件前缀。
--backup-dir 将备份文件(如~filename)存放在在目录下。
-suffix=SUFFIX 定义备份文件前缀
http://www.68idc.cn/help/server/20150315274360.html
要排除 "public_html" 文件夹下的 "database.txt" 文件:
--exclude 'public_html/database.txt'
使用 '--exclude-from' 排除多个文件夹和文件
建立文件:
/home/backup/exclude.txt
在里面定义要排除的文件夹和文件
sources
public_html/database.*
downloads/test/*
经过测试一般
文件夹
uploads
download/softs/
使用指令:
--exclude-from '/home/backup/exclude.txt'
最后的命令如下:
rsync -e 'ssh -p 30000' -avl --delete --stats --progress --exclude-from '/home/backup/exclude.txt' demo@123.45.67.890:/home/demo /backup/
rsync如何实现同步目标路径下的目录,不同步路径下的文件 ,只想同步目录
复制代码 代码如下:
rsync -av --delete -f '+ */' -f '- *' SRC/ DEST/