设计思想:通过
rsync远程同步数据,lsyncd用来监控指定目录的改动
rsync
安装
1.yum install rsync
2.编译安装
>cd rsync-3.1.3
./configure
make make install
服务端配置(接收文件)
vim /etc/rsyncd.conf
log file = /etc/rsyncd/rsyncd.log
pid file = /etc/rsyncd/rsyncd.pid
lock file = /etc/rsyncd/rsyncd.lock
# 指定用户密码对文件
secrets file = /etc/rsyncd/rsyncd.secrets
# 允许的IP段
hosts allow = 192.168.3.0/24,192.168.2.0/24
# 是否允许列表
list = yes
# rsync以什么用户组身份启动
uid = root
gid = root
# 最大连接数
max connections = 100
use chroot = no
[test]
#模块目录
path = /root/mongodb
# 说明:这个选项最好加上,否则再很多crontab的时候往往发生错误你也未可知,因为你不可能天天去看每时每刻去看log,不加上这个出现错误的几率相对会很高
ignore errors
# 描述信息,可以任意填写
comment = www bak
# 认证的用户,服务器必须存在这个系统用户
auth users = rsync
# 是否只读(若从客户端同步到服务器必须设置为NO)
read only = no
服务端
# 设置用户密钥
# 配置密码文件(权限必须600)
echo 'rsync:Hdsa123_' > /etc/rsyncd/rsyncd.secrets
# 设置密码文件权限
chmod 600 /etc/rsyncd/rsyncd.secrets
# 启动服务端
mkdir /root/mongodb
rsync --daemon --config=/etc/rsyncd.conf
指定目录必须存在
客户端
# 设定密码
echo 'Hdsa123_' > /etc/rsync.pass
chmod 600 /etc/rsync.pass
### 向server段上传数据
rsync -avzP --progress --password-file=/etc/rsync.pass /tmp/ rsync@192.168.152.111::test (把/tmp下的数据发送到rsync服务器的[test]下的指定目录)
### 从server段拉取数据
>rsync -avzP --delete --password-file=/etc/rsync.pass rsync@192.168.152.111::test /tmp/ (把[test]设置下的目录的数据 拉取到/tmp)
一般同步传输目录都使用
-azvP选项.
lsyncd
安装
1. rpm
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install lsyncd
2. 源码安装
yum install gcc glibc-devel make ncurses-devel openssl-devel xmlto -y
tar xf lsyncd-2.2.2.tar.gz
cd lsyncd-2.2.2
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/lsyncd
make && make install
配置文件讲解(/etc/lsyncd.conf)
settings {
logfile ="/var/log/lsyncd.log",
statusFile ="/etc/lsyncd.status",
pidfile = "/var/run/lsyncd.pid",
nodaemon = false,
maxDelays = 1 ,
inotifyMode = "CloseWrite",
statusInterval = 5,
-- 同步时间间隔
maxProcesses = 10,
}
sync{
default.rsync,
source="/web/data/",
target="rsync@192.168.30.95::test",
delete = true,
delay = 1,
--init = true,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pass",
}
}
# 启动:
lsyncd -log Exec /etc/lsyncd.conf
# 源码安装启动
/usr/local/lsyncd/bin/lsyncd -log Exec /etc/lsyncd.conf
主要分为
settings,sync,rsync
settings 部分,其实就是关于lsyncd工具自身的一些选项设置:
logfile : 指定lsyncd工具本身运行所产生的日志文件存放位置
statusFile : 定义lsyncd监控目录状态文件的存放位置
statusInterval : 隔多少秒记录一次被监控目录的状态
nodaemon=true : 默认是不启用守护模式的
inotifyMode : 指定要监控的事件,如,CloseWrite,Modify,CloseWrite or Modify
maxProcesses : 指定同步时进程的最大个数
maxDelays : 当事件被命中累计多少次后才进行一次同步
sync 部分主要用来定义同步时的一些设置,可以同时同步多个目录,只需要在该代码块中事先定义好多个sync即可
default.rsync : 指定lsyncd运行模式,另外,还有default.direct,default.rsyncssh模式,个人建议缺省
source : 指定要监控的目录,务必全部用绝对路径
target : 要同步到的目标目录,一般为rsync服务端模块下指定的目录
init : 为false时表示只同步lsyncd进程启动以后发生改动事件的文件,否则,反之,默认为true
delay : 当命中的事件累计到多少时再触发同步
exclude : 通过此选项排除掉不需要同步的文件,可用它自己的正则进行匹配
delete : 和rsync 的 --delete 作用一样,先清空再同步
下面是关于 rsync 工具自身的一些设置选项
compress : 压缩后再同步
bwlimit : 限速同步,当你不想占满带宽时
archive : 归档模式同步
perms : 保留文件原有属性同步
远程同步设置
settings忽略
sync{
default.rsync,
source="/web/data/ftp/",
target="rsync@172.30.0.27::picture",
delete = true,
delay = 1,
init = true,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pass",
}
}
多主机同步
settings {
logfile ="/var/log/lsyncd.log",
statusFile ="/etc/lsyncd.status",
pidfile = "/var/run/lsyncd.pid",
nodaemon = false,
maxDelays = 1 ,
inotifyMode = "CloseWrite",
statusInterval = 5,
-- 同步时间间隔
maxProcesses = 10,
}
sync{
default.rsync,
source="/web/data/ftp/",
target="rsync@172.30.0.27::picture",
delete = true,
delay = 1,
init = true,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pass",
}
}
sync{
default.rsync,
source="/web/data/ftp/",
target="rsync@172.30.0.28::picture",
delete = true,
delay = 1,
init = true,
rsync = {
binary = "/usr/bin/rsync",
archive = true,
compress = true,
verbose = true,
password_file = "/etc/rsync.pass",
}
}
启动自动同步目录
/usr/local/lsyncd/bin/lsyncd -log Exec /etc/lsyncd.conf