博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rsync , rsync + ssh, rsync + lsyncd 多种同步方案与比较
阅读量:4078 次
发布时间:2019-05-25

本文共 2246 字,大约阅读时间需要 7 分钟。

1. 利用 ssh+rsync

 只需要在服务器端打开 ssh 服务, 并启动 xinetd 中 rsync 服务则可使用
 a. 增量同步
  rsync -av /src-dir/.  .
 b. 镜像同步
  rsync -av --delete /src-dir/.  .
 
 特点: 配置简单, 不需要配置 rsyncd.conf 配置文件, 但需要在同步过程中进行用户认证
 注: 利用 expact + gzipexe 可以创建自动同步加密脚本
 使用: 可手动同步或每天晚上定制时间任务同步
 缺点:无法实现实时同步, 不可以成为双机热备份方案么

 

2. 启用 rsync 服务

 需要配置 /etc/rsyncd.conf 配置文件, 需要启动 xinetd 中 rsync 服务, 可以不通过 sshd 协调
 a. 配置文件 (参考  man 5 rsyncd.conf , 目录共享管理参考 smb.conf)

rsyncd.conf 参考

motd file = true     # 时间记录
pid file = /var/run/rsyncd.pid
port = 873
address = 0.0.0.0
log file = /var/log/rsyncd.log  # rsync 独立日志, 记录每个文件更新信息
syslog facility = syslog   # 增加同步启动与结束信息到 /var/log/messages 仲
uid = nobody      # 注: 定义同步时 rsync 进程用户 id
gid = nobody
use chroot = no

[share]

path=/tmp/test
read only=false

rsyncd.conf 配置安全信息:
charset 用于设定字符集, 可用字符集参考 smb.conf 标准
max connections 并发连接数量
read only  读写控制
write only 读写控制
list  是否允许客户端利用  rsync --list-only rsync://192.168.1.11:873 查询共享目录信息
 注: rsync --list-only rsync://192.168.1.11:873/share/. 能够列出文件信息, 与 list 参数无关
exclude 同步过程中忽略某个文件或目录 ex: = new/ old/ kdump.conf (注:只需要相对路径)
exclude from = /etc/rsyncd.list 以文件记录同步过程忽略信息
incoming chmod 文件目录权限定义
outgoing chmod 文件目录权限定义
auth users 配合 secrets file 使用, 定义用户认证(明文) = user1 user2 user3
secrets file = filepath 验证文件 语法 user:password (必须包含上述user123) 文件 root 600 属性
hosts allow 主机 IP 定义
hosts deny 主机 IP 定义
log format 默认格式 %o %h [%a] %m (%u) %f %l 参考 rsyncd.conf

 常见同步语法
 rsync --list-only rsync://192.168.1.11:873/share/. 能够列出文件信息
 rsync --list-only rsync://192.168.1.11:873 查询共享目录信息
 rsync --exclude-from=file.txt rsync://192.168.1.11:873/share/.  /tmp/test/. 不同步指定信息

 优点: 避免显示主机文件信息绝对路径, 多种安全设定, 不需要利用ssh 进行用户验证, 支持匿名同步

 缺点: 无法主动推送文件

 

3. rsync+lsyncd 数据同步

 

       [rsync server ]  <------     [ lsyncd ]    --->  [ rsync server ]

 

rsync 客户端需要编译 lsyncd 软件,安装 rsync 工具

rsync 服务器需要配置并启动 rsync 进程, 如上例子, 匿名共享 share 目录

 

下载最新版

依赖: lua >= 5.1.3, rhel6 补丁

语法需调用 LUA 格式

 

创建配置文件 share.lua

settings = { 

.. 略
 nodaemon   = true,    # false 成为前台进程, 方便测试
 statusInterval = 3,    # lsyncd.status 状态更新时间间隔
 ...略
}

sync{

 ..  略
}

bash = {    

 ... 略
}

settings 为主配置, sync 为同步配置, bash 为同步方案

启动方法

lsyncd  share.lua

初次启动则会自动同步文件内容, 后发生文件修改, 增加, 删除都会进行自动同步

如果需要对多台电脑进行同步, 可以利用 lsyncd  backup.lua 等脚本多次进行进程启动

 方案优点:

  1. 自动对目录中文件向 rsync 服务器进行推送
  2. 能够支持多台 rsync 服务器
  3. 避免人工参与修改
 缺点:
  同步时间非实时, 约莫具有30秒延时
  不建议采用大文件进行同步

转载地址:http://cqnni.baihongyu.com/

你可能感兴趣的文章
Java实现DES加密解密
查看>>
HTML基础
查看>>
Java IO
查看>>
Java NIO
查看>>
Java大数据:Hbase分布式存储入门
查看>>
大数据学习:Spark RDD操作入门
查看>>
大数据框架:Spark 生态实时流计算
查看>>
大数据入门:Hive和Hbase区别对比
查看>>
大数据入门:ZooKeeper工作原理
查看>>
大数据入门:Zookeeper结构体系
查看>>
大数据入门:Spark RDD基础概念
查看>>
大数据入门:SparkCore开发调优原则
查看>>
大数据入门:Java和Scala编程对比
查看>>
大数据入门:Scala函数式编程
查看>>
【数据结构周周练】002顺序表与链表
查看>>
C++报错:C4700:使用了非初始化的局部变量
查看>>
【数据结构周周练】003顺序栈与链栈
查看>>
C++类、结构体、函数、变量等命名规则详解
查看>>
C++ goto语句详解
查看>>
【数据结构周周练】008 二叉树的链式创建及测试
查看>>