首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在CentOS7上配置rsync源服务器+inotify实时同步

在CentOS7上配置rsync源服务器+inotify实时同步

作者头像
拓荒者
发布于 2019-03-11 02:57:18
发布于 2019-03-11 02:57:18
1.1K00
代码可运行
举报
文章被收录于专栏:运维经验分享运维经验分享
运行总次数:0
代码可运行

概述

rsync是一个开源的快速备份工具,可以再不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,再传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。

原理

再远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客户机的rsync同步操作的服务器称为同步源。再同步过程中,同步源负责提供文档的原始位置,而发起端对该位置具有读取权限,如图所示:

配置rsync源服务器

1.检查rsync是否安装

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost ~]# rpm -q rsync
  2. rsync-3.0.9-18.el7.x86_64

2.修改rsync默认配置文件,位于/etc/rsyncd.conf。

代码语言:javascript
代码运行次数:0
运行
复制
  1. 插入以下内容
  2. uid = nobody
  3. gid = nobody
  4. use chroot = yes //禁锢在源目录//
  5. address = 192.168.126.138 //监听地址//
  6. port 873 //监听端口//
  7. log file = /var/log/rsyncd.log //日志文件位置//
  8. pid file = /var/run/rsyncd.pid //存放进程ID的文件位置//
  9. hosts allow = 192.168.126.0/24 //允许访问的客户机地址//
  10. # max connections = 4
  11. # pid file = /var/run/rsyncd.pid
  12. # exclude = lost+found/
  13. # transfer logging = yes
  14. # timeout = 900
  15. # ignore nonreadable = yes
  16. # dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2
  17. [wwwroot] //共享模块名称//
  18. path = /var/www/html //源目录的实际路径//
  19. read only = no //是否为只读//
  20. dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //同步时不再压缩的文件类型//
  21. auth users = backuper //授权账户//
  22. secrets file = /etc/rsyncd_users.db //存放账户信息的数据文件//

3.为备份账户创建数据文件

根据上一步的设置,创建账号数据文件,添加一行用户记录,以冒号分隔,用户名称为backup,密码为abc123。由于账号信息采取明文存放,因此应调整文件权限,避免账号信息泄露。

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost ~]#vim /etc/rsyncd_users.db
  2. backuper:abc123
  3. [root@localhost ~]#chmod 600 /etc/rsyncd_users.db

4.开启rsync服务,运行参数为 --daemon。

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost opt]# systemctl stop firewalld.service
  2. [root@localhost opt]# setenforce 0
  3. [root@localhost opt]# rsync --daemon
  4. [root@localhost opt]# netstat -ntap | grep rsync
  5. tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 2934/rsync

使用rsync备份工具

配置源的方法:

在执行运程同步任务时,rsync命令需要指定同步源服务器中的资源位置。rsync同步源的资源表示方式为“用户名@主机地址::共享模块名”或者“rsync://用户名@主机地址/共享模块名”,前者为两个冒号分隔形式,后者为URL地址形式。

代码语言:javascript
代码运行次数:0
运行
复制
  1. rsync -avz backuper@192.168.175.129::wwwroot /opt/
  2. rsync -avz rsync://backuper@192.168.175.129/wwwroot /opt/

1.执行以下操作将源服务器中的wwwroot共享模块,下载到客户机的本地/var/www/html目录下。

代码语言:javascript
代码运行次数:0
运行
复制
  1. 源服务器:
  2. [root@localhost ~]# cd /var/www/html/
  3. [root@localhost html]# echo "123" > 111.txt
  4. [root@localhost html]# echo "456" > 222.txt
  5. [root@localhost html]# ls
  6. 111.txt 222.txt
  7. 客户端:
  8. [root@localhost opt]# rsync -avz backuper@192.168.126.138::wwwroot/ ./ //下载到当前目录//
  9. Password:
  10. receiving incremental file list
  11. ./
  12. 111.txt
  13. 222.txt
  14. sent 102 bytes received 221 bytes 23.93 bytes/sec
  15. total size is 8 speedup is 0.02
  16. [root@localhost html]# ls
  17. 111.txt 222.txt

2.在客户端上传文件到源服务器

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost opt]#mkdir b1 b2 b3 b4
  2. [root@localhost opt]# ls
  3. b1 b2 b3 b4 b5 rh
  4. [root@localhost opt]# rsync -avz backuper@192.168.126.138::wwwroot/ ./ #上传
  5. Password:
  6. receiving incremental file list
  7. ./
  8. 111.txt
  9. 222.txt
  10. sent 102 bytes received 221 bytes 23.93 bytes/sec
  11. total size is 8 speedup is 0.02 #上传成功
  12. 源服务器上查看:
  13. [root@localhost ~]# cd /var/www/html/
  14. [root@localhost html]# ls
  15. b1 b2 b3 b4 b5 rh
代码语言:javascript
代码运行次数:0
运行
复制
  1. 注意:
  2. 上传前需要把源服务器rsync的配置文件rsyncd.conf中的uid、gid修改为root

配置rsync+inotify实施同步

将rsync工具与inotify机制相结合,可以实现触发式备份(实时同步)——只要原始位置的文档发生变化,就立即启动增量备份操作,如图所示,否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。

正因为inotify通知机制由Linux内核提供,因此要做本机监控,在触发式备份中应用时更适合上行同步。下面一次介绍其配置过程。

1.调整inotify内核参数

当要监控的目录、文件数量较多或者变化较频繁时,建议加大这三个参数的值。可以直接修改/etc/sysctl.conf的配置文件,将管理队列、实例数、监控数进行设置。

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost html]# vim /etc/sysctl.conf
  2. # For more information, see sysctl.conf(5) and sysctl.d(5). //添加//
  3. fs.inotify.max_queued_events = 16384
  4. fs.inotify.max_user_instances = 1024
  5. fs.inotify.max_user_watches = 1048576
  6. [root@localhost html]# sysctl -p //启动//
  7. fs.inotify.max_queued_events = 16384
  8. fs.inotify.max_user_instances = 1024
  9. fs.inotify.max_user_watches = 1048576

2.安装inotifi-tools

使用inotify机制还需要安装inotifi-tools,以便提供inotifywait和inotifywatch辅助工具程序,用来监控和汇总改动情况。

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost rs]# tar zxvf inotify-tools-3.14.tar.gz -C /opt/ #解包
  2. [root@localhost opt]# cd inotify-tools-3.14/
  3. [root@localhost inotify-tools-3.14]# yum install gcc gcc-c++ make -y #安装编译软件
  4. [root@localhost inotify-tools-3.14]# ./configure
  5. [root@localhost inotify-tools-3.14]#make && make install

3.编写触发式同步脚本

代码语言:javascript
代码运行次数:0
运行
复制
  1. root@localhost opt]# vim inotify.sh
  2. #!/bin/bash
  3. INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
  4. RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.126.138::wwwroot/"
  5. $INOTIFY_CMD | while read DIRECTORY EVENT FILE
  6. do
  7. if [ $(pgrep rsync | wc -l) -le 0 ] ; then
  8. $RSYNC_CMD
  9. fi
  10. done

上述脚本用来检测本机/var/www/html目录的变动情况,一旦有更新触发rsync同步操作,上传备份至服务器192.168.126.138的/var/www/html目录下。

4.验证

1).在源服务器运行inotifywait -mrq -e modify,create,move,delete /var/www/html/

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@localhost html]# inotifywait -mrq -e modify,create,move,delete /var/www/html/ //静默等待状态//

2)打开源服务器的另一个窗口在/var/www/html目录下创建新的文件

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost ~]# cd /var/www/html/
  2. [root@localhost html]# ls
  3. [root@localhost html]# echo "this is 111" > 111.txt //写入文件//
  4. [root@localhost html]# echo "this is 222" > 222.txt
  5. [root@localhost html]# rm -rf 111.txt //删除文件//

3)查看源服务器的更新触发状态

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost html]# inotifywait -mrq -e modify,create,move,delete /var/www/html/
  2. /var/www/html/ CREATE 111.txt
  3. /var/www/html/ MODIFY 111.txt
  4. /var/www/html/ CREATE 222.txt
  5. /var/www/html/ MODIFY 222.txt
  6. /var/www/html/ DELETE 111.txt
  7. //监控端已有反馈//

4)查看服务器中的/var/www/html目录下的变化情况

代码语言:javascript
代码运行次数:0
运行
复制
  1. [root@localhost html]# ls
  2. 111.txt 222.txt
  3. [root@localhost html]# ls
  4. 222.txt

实验成功

(adsbygoogle = window.adsbygoogle || []).push({});

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018/10/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
rsync+inotify实现远程实时同步
rsync,英文全称是remote synchronize,是一款实现远程同步功能的免费软件,它在同步文件的同时,可以保持原来文件的权限、时间、软硬链接等附加信息。 rsync提供了一个客户机和远程文件服务器的文件同步的快速方法,而且可以通过ssh方式来传输文件。甚至还可以实现只同步一个文件里有变化的内容部分,所以可以实现快速的同步备份数据。同时,rsync还可以实现同步本地数据、删除文件和目录的功能。
星哥玩云
2022/07/14
7380
rsync+inotify实现远程实时同步
大点干!早点散----------rsync+inotify实现远程实时同步
rsync是linux系统下的数据镜像备份工具,使用快速增量备份工具remote sync可以远程同步,可以在不同主机之间进行同步,可以实现全量备份与增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适合用于架构集中式的备份或异地备份等应用。同时rsync支持本地复制,或者与其他ssh、rsync主机同步。
不吃小白菜
2020/09/15
7430
rsync自动同步_文件实时同步
  rsync(Remote Sync,远程同步)是一款开源的快速增量备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。 支持本地复制,或者与其他 SSH、rsync 主机同步。 官方网站:http://rsync.samba.org
全栈程序员站长
2022/11/04
4.8K0
rsync自动同步_文件实时同步
配置rsync+inotify实现站点文件实时同步
rsync /etc/fstab /opt rsync -rl /etc/fstab /boot/grub /opt
星哥玩云
2022/07/14
9810
19 张图详解 Rsync 远程同步
从字面意思上,rsync 可以理解为 remote sync(远程同步),但它不仅可以远程同步数据(类似于 scp 命令),还可以本地同步数据(类似于 cp 命令)。不同于 cp 或 scp 的一点是,使用 rsync 命令备份数据时,不会直接覆盖以前的数据(如果数据已经存在),而是先判断已经存在的数据和新数据的差异,只有数据不同时才会把不相同的部分覆盖。
我的小碗汤
2023/03/20
5.9K0
19 张图详解 Rsync 远程同步
配置 inotify+rsync 实时同步
rsync 虽然可以实现快速备份,但是什么东西都不可能是十全十美的,作为计划任务备份,都是固定时间进行的,而且延迟明显、实时性差,当同步源长期不变化时,密集的定期任务是不必要的。 实时备份就不同了,一旦同步源出现变化,立即启动备份,只要同步源无变化,则不执行备份,但是他只能实现上传功能。 Linux内核提供了inotify通知接口,用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这个机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
小手冰凉
2019/09/10
1.1K0
配置inotify+rsync实时同步
对rsync服务及命令不熟悉的,可以参考博文通过rsync实现远程同步 另外本文也是基于“通过rsync实现远程同步”这篇的试验环境的。
星哥玩云
2022/07/28
7040
配置inotify+rsync实时同步
Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
Rsync 是一个开源的快速备份工具,是Linux和UNIX操作系统默认安装的组件之一,可在不同主机间镜像同步整个目录,并支持增量备份文件传输,保持链接和权限,采用优化的同步算法,传输前执行压缩,适用于异地备份,镜像服务器等应用。
杰哥的IT之旅
2020/06/18
1.7K0
rsync远程同步文件_ssh远程登录
一款快速增量备份工具Remote Sync,远程同步 支持本地复制,或者与其他SSH、rsync 主机同步 它名称里面的r指的是 remote,rsync 其实就是”远程同步”(remote sync)的意思。与其他文件传输工具(如 FTP 或 scp)不同,rsync 的最大特点是会检查发送方和接收方已有的文件,如果没有相当于新建则是全量备份,如果目标方已有一些文件,则用增量备份方式仅传输有变动的部分(默认规则是文件大小或修改时间有变动)。
全栈程序员站长
2022/11/04
2.3K0
rsync远程同步文件_ssh远程登录
rsync+inotify实时同步
1.rsync 与传统的cp、tar备份方式相比,rsync具有安全性高、备份迅速、支持增量备份的优点,通过rsync可以解决对实时性要求不高的数据备份需求,例如定期的备份文件服务器数据到远端服务器,对本地磁盘定期做数据镜像等。 随着应用系统规模不断的扩大,对数据安全性和可靠性也提出了更高的要求,rsync在高端业务中也逐渐暴露出许多不足。首先,rsync实时同步时,需要扫描所有的文件进行比对,进行差量传输。如果文件数量打到了百万甚至千万量级,扫描所有的文件是非常耗时的,而且正在发生变化的往往是其中很少一部
用户1173509
2018/01/17
1.5K0
通过rsync实现远程同步
正确、有效的备份方案是保障系统及数据安全的重要手段,在服务器中,通常会结合计划任务、Shell脚本来执行本地备份,为了进一步提高备份的可靠性,使用异地备份也是非常有必要的。
星哥玩云
2022/07/28
6920
通过rsync实现远程同步
Rsync+Inotify 实现数据同步
Rsync 是UNIX及类UNIX-Like平台下一款强大的数据镜像备份软件,它不像FTP或其他文件传输服务那样需要进行全备份,Rsync 可以根据数据的变化进行差异备份,从而减少数据流量,提高工作效率.你可以使用它进行本地数据或远程数据的复制,Rsync可以使用 SSH 安全隧道进行加密数据传输,Rsync 服务器端定义源数据,Rsync客户端仅在源数据发生改变后才会从服务器上实际复制数据至本地,如果源数据在服务器端被删除,则客户端数据也会被删除,以确保主机之间的数据是同步的.Rsync 使用 TCP-873 端口.
王 瑞
2022/12/28
6630
Rsync远程同步
rsync是一款优秀的、快速的、多平台的本地或远程数据镜像同步备份工具。适用于Unix/Linux/Windows等多种平台。
星哥玩云
2022/07/03
8840
Linux下rsync+inotfy/sersync实现数据实时同步
导读:本文主要讲解了如何利用 rsync+inotfy/sersync 实现数据实时同步的操作过程和部分原理、参数。
开心分享
2020/08/11
1.3K0
Linux下rsync+inotfy/sersync实现数据实时同步
网络服务—RSYNC(映射nobody)
注意:使用root用户进行实验可以,但生产环境中尽量使用单独创建的普通用户,减少权限溢出;
用户10048459
2022/09/16
1.1K0
rsync+inotify实现数据单向实时同步
主服务器端,向从服务器端实时同步数据 master端IP地址:192.168.1.39(node1) slave端IP地址:192.168.1.40 (node2) 一、配置从服务器 在从服务器安装rsync,创建并配置rsync文件。
星哥玩云
2022/07/04
4680
CentOS下(rsync+inotify)监听式实现服务器间的备份实时同步
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/78720072
泥豆芽儿 MT
2018/09/11
2.4K0
CentOS下(rsync+inotify)监听式实现服务器间的备份实时同步
采用Rsync与Inotify实时同步文件目录
描述: Rsync(remote synchronize)是一个提供快速增量文件传输的开源实用程序, rsync是根据GNU通用公共许可证免费提供的,目前由Wayne Davison维护。
全栈工程师修炼指南
2022/09/28
3.3K0
采用Rsync与Inotify实时同步文件目录
使用 inotify 和 rsync 实现文件实时同步
在生产中有一种需求是,当目录下的文件数据发生变化时,就将数据备份到备份服务器上。实现这样的需求需要做到以下两点:
:Darwin
2023/07/05
2K0
Linux安装rsync和inotify实现文件夹实时同步
在web服务器中,作为代码发布机A,文件同步到服务器B,C,D等集群中,可以忽略某个文件和目录。
星哥玩云
2022/05/24
2K0
Linux安装rsync和inotify实现文件夹实时同步
推荐阅读
相关推荐
rsync+inotify实现远程实时同步
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验