当前位置:首页 > linux基础 > 正文内容

rsync+lsyncd实时同步

3年前 (2021-04-14)linux基础759

安装 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在启动时不会删除目标上的文件,但会删除那些在正常操作期间被删除的文件


“rsync+lsyncd实时同步” 的相关文章

find文件查找

find查找find命令可以根据不同的条件来进行查找文件,例如:文件名称、文件大小、文件修改时间、属主属组、权限、等等方式。同时find命令是Linux下必须掌握的。find 命令的基本语法如下命令路径选项表达式动作find[path...][options][expression][action]...

sersync实时同步

sersync实时同步

实时同步概述实时同步是一种只要当前目录发生变化则会触发一个事件,事件触发后会将变化的目录同步至远程服务器。保证数据的连续性, 减少人力维护成本,解决nfs单点故障实时同步工具选择sersync+rsync(√)、inotify+rsyncInotify是一个通知接口,用来监控文件系统的各种变化,如果...

Shell介绍(二)函数,数组

函数命令的集合 完成特定功能的代码块模块化 复用函数和变量类似 只有先定义才可以调用,如果只定义不调用 则不会执行函数的定义和调用三种方法:[root@web scripts]# cat fun.sh #!/bin/sh test1(){   ...

Shell介绍(四)条件表达式,字符串比对

条件表达式[ ]======test   []常用[ -f file ] 文件是否存在 且为普通文件 重点[ -e file ] 文件存在则为真[ -d file ] 目录存在则为真 重点[ -x file ] 文件有执行权限则为真[ -w file ] 文件可写则为真[...

自动化运维(一)Ansible安装及模块的使用

自动化运维(一)Ansible安装及模块的使用

1:Ansible安装1.什么是AnsibleAnsible是python 中的一套模块,系统中的一套自动化工具,只需要使用ssh协议连接及可用来系统管理、自动化执行命令等任务。2.Ansible优势1、ansible不需要单独安装客户端,也不需要启动任何服务2、ansible是python中的一套...

自动化运维(二)Ansible Playbook

自动化运维(二)Ansible Playbook

1.Playbook剧本1.playbook翻译过来就是“剧本”,那playbook组成如下play: 定义的是主机的角色task: 定义的是具体执行的任务playbook: 由一个或多个play组成,一个play可以包含多个task任务简单理解为: 使用不同的模块完成一件事情2.playbook的...