rsync(remote sync)远程同步,rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。已支持跨平台,可以在Windows与Linux间进行数据同步。rsync监听端口:873,rsync运行模式:C/S。
官网:https://rsync.samba.org/官方文档:https://www.samba.org/ftp/rsync/rsync.htmlGitHub地址:https://github.com/WayneD/rsync
解决方法:rsync+inotify
IP |
主机名 |
角色 |
192.168.0.113 |
k8s-master-168-0-113 |
rsync、 inotify-tools【数据源】 |
192.168.0.116 |
k8s-master2-168-0-116 |
rsync【备份节点】 |
yum -y install rsync
cat >/etc/rsyncd.conf<uid = root
gid = root
#禁锢在源目录
use chroot = yes
#监听地址,在另外的机器上,记得修改
address = 192.168.0.113
#监听地址tcp/udp 873,可通过cat /etc/services | grep rsync查看
port 873
#日志文件位置
log file = /var/log/rsyncd.log
#存放进程 ID 的文件位置
pid file = /var/run/rsyncd.pid
#允许访问的客户机地址
hosts allow = 192.168.0.0/16
#共享模块名称
[nfsdata]
#源目录的实际路径
path = /opt/nfsdata
comment = Document Root of www.kgc.com
#指定客户端是否可以上传文件,默认对所有模块为 true
read only = false
#同步时不再压缩的文件类型
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z
#授权账户,多个账号以空格分隔,不加则为匿名,不依赖系统账号
auth users = backuper
#存放账户信息的数据文件
secrets file = /etc/rsyncd_users.db
EOF
rsyncd.conf 常用参数详解
rsyncd.conf 参数 |
参数说明 |
uid=root |
rsync 使用的用户。 |
gid=root |
rsync 使用的用户组(用户所在的组) |
use chroot=no |
如果为 true,daemon 会在客户端传输文件前“chroot to the path”。这是一种安全配置,因为我们大多数都在内网,所以不配也没关系 |
max cnotallow=200 |
设置最大连接数,默认 0,意思无限制,负值为关闭这个模块 |
timeout=400 |
默认为 0,表示 no timeout,建议 300-600(5-10 分钟) |
pid file |
rsync daemon 启动后将其进程 pid 写入此文件。如果这个文件存在,rsync 不会覆盖该文件,而是会终止 |
lock file |
指定 lock 文件用来支持“max connections”参数,使得总连接数不会超过限制 |
log file |
不设或者设置错误,rsync 会使用 rsyslog 输出相关日志信息 |
ignore errors |
忽略 I/O 错误 |
read notallow=false |
指定客户端是否可以上传文件,默认对所有模块为 true |
list=false |
是否允许客户端可以查看可用模块列表,默认为可以 |
hosts allow |
指定可以联系的客户端主机名或和 ip 地址或地址段,默认情况没有此参数,即都可以连接 |
hosts deny |
指定不可以联系的客户端主机名或 ip 地址或地址段,默认情况没有此参数,即都可以连接 |
auth users |
指定以空格或逗号分隔的用户可以使用哪些模块,用户不需要在本地系统中存在。默认为所有用户无密码访问 |
secrets file |
指定用户名和密码存放的文件,格式;用户名;密码,密码不超过 8 位 |
[backup] |
这里就是模块名称,需用中括号扩起来,起名称没有特殊要求,但最好是有意义的名称,便于以后维护 |
path |
这个模块中,daemon 使用的文件系统或目录,目录的权限要注意和配置文件中的权限一致,否则会遇到读写的问题 |
配置/etc/rsyncd_users.db,跟auth users对应 |
cat >/etc/rsyncd_users.db<backuper:123456
EOF
#官方要求,必须赋权600,要不然会有问题
chmod 600 /etc/rsyncd_users.db
rsync常用命令参数详解
rsync --help
rsync [选项] 原始位置 目标位置
常用选项 说明
-r 递归模式,包含目录及子目录中的所有文件
-l 对于符号链接文件仍然复制为符号链接文件
-v 显示同步过程的详细信息
-z 在传输文件时进行压缩goD
-p 保留文件的权限标记
-a 归档模式,递归并保留对象属性,等同于-rlpt
-t 保留文件的时间标记
-g 保留文件的属组标记(仅超级用户使用)
-o 保留文件的属主标记(仅超级用户使用)
-H 保留硬链接文件
-A 保留ACL属性信息
-D 保留设备文件及其他特殊文件
--delete 删除目标位置有而原始位置没有的文件
--checksum 根据对象的校验和来决定是否跳过文件
rsync --daemon --cnotallow=/etc/rsyncd.conf
netstat -tnlp|grep :873
# 在192.168.0.116节点上测试手动同步
# 从远端【拉取】数据
rsync -avz root@192.168.0.113:/opt/nfsdata/* /opt/nfsdata/
# 在192.168.0.113节点上测试手动同步
# 从【推送】数据
rsync -avz /opt/nfsdata/* root@192.168.0.116:/opt/nfsdata/
### 在192.168.0.116节点上测试手动同步,通过【拉取】数据,配置文件配置的模块,这里走的是rsync协议,上面走的是ssh协议,只要做了免密就直接推送或拉取数据了。这里就会用到配置文件里配置的users用户了,也是secrets file文件里配置的其中一个用户。
#【方式一】
rsync -avz backuper@192.168.0.113::nfsdata /opt/nfsdata/
# 【方式二】
rsync -avz rsync://backuper@192.168.0.113/nfsdata /opt/nfsdata/
# 在192.168.0.113节点上执行
###【推送】
#【方式一】非交互式,/opt/backuper.pass文件是backuper用户的密码,且文件权限600
rsync -avz --password-file=/opt/backuper.pass /opt/nfsdata/* backuper@192.168.0.113::nfsdata
# 【方式二】
rsync -avz /opt/nfsdata/* rsync://backuper@192.168.0.113/nfsdata
在192.168.0.113机器上安装
在/proc/sys/fs/inotify目录下有max_queued_events、max_user_instances、max_user_watches这三个文件
echo 65535 > /proc/sys/fs/inotify/max_user_instances
echo 99999999 > /proc/sys/fs/inotify/max_queued_events
echo 99999999 > /proc/sys/fs/inotify/max_user_watches
# 安装inotify-tools之前,先安装一下automake和libtool这两个依赖,不然编译安装inotify-tools的时候会报错。
yum install automake libtool -y
# 当然也得安全编译工具
yum -y install gcc gcc-c++ make wget
mkdir /opt/software ; cd /opt/software
wget --no-check-certificate https://github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# 解压
tar -zxvf inotify-tools-3.14.tar.gz
cd /opt/software/inotify-tools-3.14
# 编译安装
./configure && make && make install
vi /opt/software/inotify-tools-3.14/inotify_rsync.sh
#!/bin/bash
#监听/opt/nfsdata/ 目录:
#INOTIFY_CMD变量:持续监控 /opt/nfsdata/ 目录中的创建,删除,移动,修改,改变时间的操作
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/nfsdata"
# 注意/tmp/user.pass文件里只有backuper对应的密码,而且文件权限只能是600
RSYNC_CMD="rsync -avzH --delete --password-file=/opt/backuper.pass /opt/nfsdata/* backuper@192.168.0.116::nfsdata"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
$RSYNC_CMD
done
inotifywait命令常用参数:
执行
cd /opt/software/inotify-tools-3.14/
chmod +x inotify_rsync.sh
# 启动脚本
nohup ./inotify_rsync.sh &
网页名称:Rsync+Inotify数据实时同步介绍
文章链接:http://www.csdahua.cn/qtweb/news0/326550.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网