default.rsync模式
目标主机
配置rsync
vim /etc/rsyncd.conf
log file = /var/log/rsyncd.log
#日志文件位置,启动rsync后自动产生这个文件,无需提前创建
log format = %t %a %m %f %b
#格式化日志
pidfile = /var/run/rsyncd.pid
#pid文件的存放位置
lock file = /var/run/rsyncd.lock
#支持max connections参数的锁文件
secrets file = /etc/rsyncd.pass
#用户认证配置文件
[test]
#自定义同步模块名称
path = /tmp/dest
#rsync目标服务器数据存放路径,源服务器的数据将同步至此目录
comment = test
#模块描述
uid = wakamizu
#设置rsync运行权限
gid = wakamizu
#设置rsync运行权限
port = 873
#默认端口
ignore errors
#忽略错误
use chroot = true
#默认为true,在chroot环境中运行rsync守护进程。
read only = no
#设置rsync源服务器为读写权限
list = yes
#不显示rsync源服务器资源列表
max connections = 200
#最大连接数
timeout = 600
#设置超时时间
auth users = test
#执行数据同步的用户名
hosts allow = 192.168.1.105
#允许访问来源地址
hosts deny = 0.0.0.0/24
#禁止访问来源地址
mkdir /tmp/dest/
setfactl -m u:wakamizu:rwx /tmp/dest
setfactl -d -m u:wakamizu:rwx /tmp/dest
setfactl -m g:wakamizu:rwx /tmp/dest
setfactl -d -m g:wakamizu:rwx /tmp/dest
echo "test:test">/etc/rsyncd.pass
chmod 600 /etc/rsyncd.pass
systemctl restart rsync
源主机
配置lsyncd
vim /etc/lsyncd/lsyncd.conf.lua
settings {
logfile = "/var/log/lsyncd.log", -- 定义日志文件
statusFile = "/var/log/lsyncd.status", --定义状态文件
pidfile = "/var/run/lsyncd.pid", -- 定义pid文件
inotifyMode = "CloseWrite or Modify", -- 指定在 inotify 系统上监听哪些类型的更改,可以是Modify、CloseWrite、CloseWrite or Modify
maxProcesses = 7, -- 同步进程数
maxDelays = 5, -- 监控事件阈值,达到则激活同步进程,如果需要实时同步则设置为1
insist = true -- 当错误产生时继续运行服务
}
sync {
default.rsync, --有几个模式,分别是default.rsync、defalut.direct(本地同步)、default.rsyncssh(需要ssh认证)
source = "/tmp/source", --配置源目录
target = "test@192.168.1.106::test", --配置目标目录
delete = true, -- true为同步删除差异文件,false为不同步删除差异文件,startup为启动时删除差异文件但是正常操作不删除,running为启动时不删除差异文件但是正常操作时会删除
exclude = {'*.log','*.test'}, --不同步哪些文件
-- excludeFrom = "/pathname/filename" -- 从文件中的每行规则加载正则排除同步文件
delay = 15, --假如maxDelays定义了5次事件更改的阈值,那么在15秒内只有三次事件更改不会触发同步,需要等待到15秒之后
rsync = {
archive = true, -- 递归方式传输并保持文件属性
compress = true, -- 压缩传输
verbose = true, -- 输出同步详情
password_file = "/etc/rsyncd.pass" --rsync认证文件
--backup = "true" --开启备份
--backup_dir = "/tmp/backup" --备份目录,文件被删除或者更改时原始文件会被复制到这个目录
}
}
echo "test" > /etc/rsyncd.pass && chmod 600 /etc/rsyncd.pass
mkdir /tmp/source
systemctl restart lsyncd
default.rsyncssh模式
源主机
配置免密登录
ssh-keygen
ssh-copy-id wakamizu@192.168.1.106
配置lsyncd
vim /etc/lsyncd/lsyncd.conf.lua
settings {
logfile = "/var/log//lsyncd.log", -- 定义日志文件
statusFile = "/var/log/lsyncd.status", --定义状态文件
pidfile = "/var/run/lsyncd.pid", -- 定义pid文件
inotifyMode = "CloseWrite or Modify", -- 指定在 inotify 系统上监听哪些类型的更改,可以是Modify、CloseWrite、CloseWrite or Modify
maxProcesses = 1, -- 在rsyncdssh模式下,同步进程数必须设置为1
maxDelays = 1 -- 监控事件阈值,达到则激活同步进程
}
sync {
default.rsyncssh,
source = "/tmp/source", --源文件夹
host = "wakamizu@192.168.1.106", --ssh用户和主机
targetdir="/tmp/dest", --目标文件夹,注意和default.rsync的target有差异
delete = true, -- true为同步删除差异文件,false为不同步删除差异文件,startup为启动时删除差异文件但是正常操作不删除,running为启动时不删除差异文件但是正常操作时会删除
exclude = {'*.log','*.test'}, --不同步哪些文件
-- excludeFrom = "/pathname/filename" -- 从文件中的每行规则加载正则排除同步文件
rsync = {
archive = true, -- 递归方式传输并保持文件属性
compress = true, -- 压缩传输
verbose = true, -- 输出同步详情
},
ssh = {
port =22, --指定ssh端口
identityFile="/root/.ssh/id_rsa" --指定私钥文件
}
}
systemctl restart lsyncd
注意:使用此模式目标文件夹ssh用户需要对其有足够的操作权限
default.direct模式
vim /etc/lsyncd/lsyncd.conf.lua
settings {
logfile = "/var/log//lsyncd.log", -- 定义日志文件
statusFile = "/var/log/lsyncd.status", --定义状态文件
pidfile = "/var/run/lsyncd.pid", -- 定义pid文件
inotifyMode = "CloseWrite or Modify", -- 指定在 inotify 系统上监听哪些类型的更改,可以是Modify、CloseWrite、CloseWrite or Modify
maxProcesses = 1, -- 同步进程数
maxDelays = 1 -- 监控事件阈值,达到则激活同步进程
}
sync {
default.direct,
source = "/tmp/source", --配置源目录
target = "/tmp/dest", --配置目标目录
delete = true, -- true为同步删除差异文件,false为不同步删除差异文件,startup为启动时删除差异文件但是正常操作不删除,running为启动时不删除差异文件但是正常操作时会删除
}
systemctl restart lsyncd