首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >rsync + sersync 数据同步 -- CentOS 8

rsync + sersync 数据同步 -- CentOS 8

作者头像
Kevin song
发布2020-07-16 17:52:58
发布2020-07-16 17:52:58
1.8K0
举报

rsync + sersync

rsync 是 linux 系统下的数据镜像备份工具。使用快速增量备份工具 Remote Sync 可以远程同步,支持本地复制,或者与其他 SSH、rsync 主机同步。

sersync 是基于 inotify 开发的,类似于 inotify-tools 的工具,对指定目录文件进行监听(记录具体文件 目录的增加、删除、修改),通过 rsync 进行数据增量同步,只同步发生变化的文件或者目录 。

rsync+sersync 数据同步

1. sersync 监控指定目录 文件事件变化;

2. sersync 调用 rsync 客户端命令将更新的目录和文件增量同步到 rsync 服务器,实现数据同步;

系统版本

代码语言:javascript
复制
cat /etc/redhat-release 
CentOS Linux release 8.1.1911 (Core)

安装 rsync

代码语言:javascript
复制
dnf install  rsync

查看 rsync 版本

代码语言:javascript
复制
rpm -qa rsync
rsync --version

rsync server

rsync 配置文件

代码语言:javascript
复制
cat /etc/rsyncd.conf 
uid=root
gid=root
max connections=100
use chroot=true
log file=/var/log/rsyncd.log
motd file=/etc/rsyncd.motd
transfer logging=true
hosts allow=192.168.99.0/24
[data]
path=/data
comment=data
read only =no
list=yes
auth users=root
secrets file=/etc/rsyncd.pwd

rsync 配置文件参数

代码语言:javascript
复制
uid=root        # 服务器端传输文件时,要发哪个用户和用户组来执行
gid=root        # 服务器端传输文件时,要发哪个用户和用户组来执行
max connections=100      # 客户端最多连接数
use chroot=true          
# 用 chroot ,在传输文件之前,服务器守护程序在将 chroot 到文件系统中的目录中,这样
#做的好处是可能保护系统被安装漏洞侵袭的可能。缺点是需要超 级用户权限。另外对符号链接
#文件,将会排除在外。也就是说,你在 rsync 服务器上,如果有 符号链接,你在备份服务器
#上运行客户端的同步数据时,只会把符号链接名同步下来,并不会同 步符号链接的内容
log file=/var/log/rsyncd.log        #rsync 服务器的日志
motd file=/etc/rsyncd.motd         
# 定义motd file 路径 rsyncd.motd 内容是定义服务器信息的,用户登录时会看到这个信息
transfer logging=true             # 传输文件日志
hosts allow=192.168.99.0/24       # 允许的 ip 地址
[data]                  # 模块名
path=/data              # 同步的目录
exclude=web             # 同步目录中去除的目录,即 web 不同步
comment=data            # 注释,注释内容可自己定义,起提示作用
read only=no            # 只读选择,如为 yes 则不让客户端上传文件到服务器上
list=yes                # 服务器上提供同步数据的目录是否显示
auth users=root         # 认证用户是 root
secrets file=/etc/rsyncd.pwd       
# 密码文件保存路径,注意此文件的密码要与 223 上的 rsyncd.pwd2 文件中密码相同,权限
#必须设置为600,用来认证客户端的秘钥文件 格式 USERNAME:PASSWD
#注意:配置文件里不能有注释信息

rsync 密码文件

代码语言:javascript
复制
echo "root:123456" >/etc/rsyncd.pwd       
echo "123456" >/etc/rsyncd.pwd2

修改权限

代码语言:javascript
复制
chmod 600 /etc/rsyncd.pwd                   
chmod 600 /etc/rsyncd.pwd2

systemctl 管理 rsync 服务

/etc/sysconfig/rsyncd

代码语言:javascript
复制
vim /etc/sysconfig/rsyncd 
OPTIONS=""

rsyncd.service

代码语言:javascript
复制
cat  /lib/systemd/system/rsyncd.service
[Unit]
Description=fast remote file copy program daemon
ConditionPathExists=/etc/rsyncd.conf

[Service]
EnvironmentFile=/etc/sysconfig/rsyncd
ExecStart=/usr/bin/rsync --daemon --no-detach "$OPTIONS"

[Install]
WantedBy=multi-user.target

rsyncd 启动

代码语言:javascript
复制
systemctl   start  rsyncd
systemctl   enable  rsyncd

rsync 端口 进程

代码语言:javascript
复制
netstat  -auntlp |grep 873
ps -ef |grep rsync

firewall

代码语言:javascript
复制
firewall-cmd    --add-port=873/tcp --permanent
firewall-cmd    --reload

rsync client

rsync 本地磁盘同步数据

代码语言:javascript
复制
rsync -vlzrtogp /mnt/data /backups
rsync -vlzrtogp /mnt/data/ /backups

/mnt/data 表示将整个 /data目录复制到目标目录

/mnt/data/ 表示将 data 目录中的所以内容复制到目标目录

rsync 远程同步

代码语言:javascript
复制
rsync -vlzrtopg --progress --delete  /mnt/data/ root@192.168.99.227::data --password-file=/etc/rsyncd.pwd2

rsync 数据同步限流

代码语言:javascript
复制
rsync -vlzrtogp --progress --delete --bwlimit=1000 远程文件 本地文件 //限制为1000kBytes/s
rsync -vlzrtogp --progress --delete --bwlimit=2048 本地文件 远程文件 //限制为2M/s

rsync client 参数

代码语言:javascript
复制
-v, --verbose   详细输出模式
-l, --links           保持符号链接文件
-z, --compress   在传输文件时进行压缩处理
-r, --recursive   对子目录以递归模式处理
-t, --times           保持文件时间信息
-o, --owner           保持文件属主信息 (super-user only)
-p, --perms           保持文件权限
-g, --group           保持文件属组信息

--progress           在传输时显示传输过程 
--delete             删除目标端比本地端多余得文件目录保持数据一致性
--exclude=web        指定排除一个不需要传输的文件匹配模式
--exclude-from=FILE  从 FILE 中读取排除规则
--include=PATTERN   指定需要传输的文件匹配模式
--include-from=FILE  从 FILE 中读取包含规则
--password-file=FILE 从 FILE 中读取口令,以避免在终端上输入口令
--bwlimit=RATE       限制传输 I/O 带宽

rsync + sersync

安装 rsync

代码语言:javascript
复制
dnf install  rsync

rsync 密码文件

代码语言:javascript
复制
echo "123456" >/etc/rsyncd.pwd2

修改权限

代码语言:javascript
复制
chmod 600 /etc/rsyncd.pwd2

下载 sersync

代码语言:javascript
复制
cd /opt
wget https://sersync.googlecode.com/files/sersync2.5.4_64bit_binary_stable_final.tar.gz

解压 sersync

代码语言:javascript
复制
tar -zxvf sersync2.5.4_64bit_binary_stable_final.tar.gz  
mv GNU-Linux-x86 /usr/local/sersync

sersync 配置文件

代码语言:javascript
复制
vim /usr/local/sersync/confxml.xml

启动 sersync

代码语言:javascript
复制
/usr/local/sersync/sersync2  -d -r -o  /usr/local/sersync/confxml.xml

查看 sersync 进程

代码语言:javascript
复制
ps  -ef |grep sersync2

sersync 变量

代码语言:javascript
复制
[root@kafka-node2 /]# echo "export PATH=$PATH:/usr/local/sersync" >>/etc/profile
[root@kafka-node2 /]# source /etc/profile

数据同步测试

源服务器创建文件

目的服务器查看

rsync 数据同步日志

sersync 多实例

监控多个目录进行数据同步时,分别配置不同的 sersync 配置文件即可

代码语言:javascript
复制
/usr/local/sersync/sersync2  -d -r -o  /usr/local/sersync/nginx_confxml.xml
/usr/local/sersync/sersync2  -d -r -o  /usr/local/sersync/zabbix_confxml.xml
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档