rsync+lsyncd实时同步
安装 rsync 和 lsyncd
yum install rsync lsyncd -y
配置 rsync
vim /etc/rsyncd.conf
uid = rsync # 运行进程的用户
gid = rsync # 运行进程的用户组
port = 873 # 监听端口
fake super = yes # 无需让rsync以root身份运行,允许接收文件的完整属性
use chroot = no # 禁锢推送的数据至某个目录, 不允许跳出该目录
max connections = 200 # 最大连接数
timeout = 600 # 超时时间
ignore errors # 忽略错误信息
read only = false # 对备份数据可读写
list = false # 不允许查看模块信息
auth users = rsync_backup# 定义虚拟用户,作为连接认证用户
secrets file = /etc/rsync.passwd # 定义rsync服务用户连接认证密码文件路径
[backup] # 定义模块信息
comment = commit # 模块注释信息
path = /backup # 定义接收备份数据目录
##创建密码文件
echo "密码“ > /etc/rsyncd.pwd
配置lsyncd SSH模式配置文件
vim /etc/lsyncd.conf
####SSH模式配置文件
settings {
logfile = "/var/log/lsyncd.log", --日志路径
statusFile = "/var/log/lsyncd.status", --状态文件
pidfile = "/var/run/lsyncd.pid", --pid文件路径
statusInterval = 1, --状态文件写入最短时间
nodaemon = false, --daemon运行
maxProcesses = 1, --最大进程
maxDelays = 1, --最大延迟
}
sync {
default.rsyncssh, --默认rsync+ssh,rsync版本需要升级3以上版本
source = "/home/backup/", --源目录
delete = true, --保持完全同步
host = "root@11.22.33.44", --远程服务器地址
targetdir = "/home/backup/", --目标目录
exclude={ "*.tmp", "*.bak" }, --需排除的文件
rsync = {
binary = "/usr/bin/rsync", --需先安装好rsync
archive = true, --归档
compress = false, --压缩
owner = true, --属主
perms = true, --权限
_extra = {"--bwlimit=5120"}, --限速5120KB/S
whole_file = false
},
ssh = {
port = 22
}
}
### rsync 模式配置文件
-- 全局配置
settings {
-- 日志文件存放位置
logfile ="/usr/local/lsyncd/var/lsyncd.log",
-- 状态文件存放位置
statusFile ="/usr/local/lsyncd/var/lsyncd.status",
-- 将lsyncd的状态写入上面的statusFile的间隔,默认10秒
--statusInterval = 10
-- 是否启用守护模式,默认 true
--nodaemon=true
-- inotify监控的事件 ,默认是 CloseWrite,还可以是 Modify 或 CloseWrite or Modify
inotifyMode = "CloseWrite",
-- 最大同步进程
maxProcesses = 8,
--累计到多少所监控的事件激活一次同步,即使后面的delay延迟时间还未到
--maxDelays = 1
}
-- 远程目录同步
sync {
-- rsync , rsyncssh , direct 三种模式
default.rsync,
-- 同步的源目录,使用绝对路径。
source = "/home/wwwroot/attachments",
-- 定义目的地址.对应不同的模式有几种写法,这里使用远程同步的地址,rsync中的地址
target = "rsync137@192.168.1.137::rsyncd",
-- 默认 true ,允许同步删除。还有 false, startup, running 值
--delete = true,
-- 哪些文件不同步
exclude = { ".*" },
-- 设置排除不需要同步的文件的列表,
excludeFrom="/etc/rsync_exclude.lst",
-- 累计事件,等待rsync同步延时时间,默认15秒,最大累计到1000个不可合并的事件(1000个文件变动),
delay = 15,
-- 默认 true 当init = false ,只同步进程启动以后发生改动事件的文件,原有的目录即使有差异也不会同步
--init = true,
-- rsync 的配置
rsync = {
-- rsync 的二进制处理文件
binary = "/usr/bin/rsync",
-- 归档模式
archive = true,
-- 压缩传输
compress = true,
-- 增量
verbose = true,
-- 密码文件
password_file = "/etc/rsyncd.pwd",
-- 其他 rsync 的配置参数, 限速(--bwlimit KBPS),使用 rsync -v 查看详细参数
-- _extra = {"--bwlimit=200"}
}
}
lsyncd 配置说明
1、settings 部分 关于lsyncd工具自身的一些选项设置
--: 注释, 因为是lua 语言,所以 --是注释
logfile : 指定lsyncd工具本身运行所产生的日志文件存放位置
statusFile : 定义lsyncd监控目录状态文件的存放位置
statusInterval : 隔多少秒记录一次被监控目录的状态
nodaemon=true : 默认是不启用守护模式的
inotifyMode : 指定要监控的事件,如,CloseWrite(关闭写入),Modify(修改),CloseWrite or Modify, 默认是CloseWrite
maxProcesses : 指定同步时进程的最大个数
maxDelays : 当事件被命中累计多少次后才进行一次同步
2、sync 部分 主要用来定义同步时的一些设置,可以同时同步多个目录,只需要在该代码块中事先定义好多个sync即可
default.rsync : 指定lsyncd运行模式,另外,还有>default.direct,default.rsyncssh模式
source : 指定要监控的目录,务必全部用绝对路径
target : 要同步到的目标目录,一般为rsync服务端模块下指定的目录,说明: 'rsyncuser@192.168.10.20::bak' , 'rsyncuser':同步的用户在备服务器上设置 ,'192.168.10.20':备服务器地址, '::backup':模块名称,同步路径在备服务器上设置
init : 为false时表示只同步lsyncd进程启动以后发生改动事件的文件,否则,反之,默认为true
delay : 当命中的事件累计到多少时再触发同步
exclude : 通过此选项排除掉不需要同步的文件,可用它自己的正则进行匹配
delete 为了保持target与souce完全同步,Lsyncd默认会delete = true来允许同步删除。它除了false,还有startup、running值,请参考 Lsyncd 2.1.x ‖ Layer 4 Config ‖ Default Behavior。
delete = true 默认。 Lsyncd将在目标上删除不在源代码中的任何东西。在启动时以及在正常操作过程中被删除的内容
delete = false Lsyncd不会删除目标上的任何文件。不在启动或正常运行。 (虽然可以覆盖)
delete = 'startup' Lsyncd将在启动时删除目标上的文件,但不会进行正常操作。
delete = 'running' Lsyncd在启动时不会删除目标上的文件,但会删除那些在正常操作期间被删除的文件