第十二章:实验案例:使用rsync构建镜像网站

实验环境

某公司在深圳、北京两地各放置了---台网站服务器,分别应对南北大区内不断增长的客户访问需求.两台服务器的网站文档必须保持--致,如图12.3所示,同步链路已通过VPN专用线路实现。

需求描述

1,服务器A(北京〉作为rsync发起端,目录/var /www / html作为原始位置。

2,服务器B(深圳)作为远程rsync服务器,目录/var /www/html 作为目标位置。

3,结合inotify机制实现触发式的上行同步,保持两个站点的网页文档一致。

推荐步骤

1,配置rsync服务器〈深圳.服务器B)。

2,通过inotify机制实现实时同步(北京,服务器A)。

[root@Linux01 ~]# vim /etc/rsyncd.conf uid = nobody
gid = nobody
use chroot = yes         //紧固在源目录
address = 192.168.9.30     //监听地址  (本机地址)
port 873              //监听端口
log file = /var/log/rsyncd.log    //日记文件位置
pid file = /var/run/rsyncd.pid  //存放进程ID 的文件位置
hosts allow = 192.168.9.0/24       //允许访问的客户机地址
[wwwroot]     //共享模块名称path = /var/www/html     //源目录的实际路径comment = http Doc     //描述信息read only = yes    //是否为只读dont compress = *.gz *.bz2 *.zip *.rar    //同步时不在压缩的文件类型auth users = backuper     //授权账户secrets file = /etc/rsyncd_users.db   //存放账户信息的数据文件

为备份账户创建数据文件。

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

[root@Linux01 ~]# vim /etc/rsyncd_users.dbbackuper:qwe@123[root@Linux01 ~]# chmod 600 /etc/rsyncd_users.db 

 

查询权限

启动 rsync 服务[root@Linux01 ~]# rsync --daemon

在服务器 (同步源  192.168.9.30)查看里面有什么文件

在发起端(192,。168.9.31)将指定的资源下载到本地 、root 目录下进行备份

[root@Linux01 ~]# rsync -avz backuper@192.168.9.30::wwwroot /root

备份结果

调整inotify 内核参数

在Lirux内核中.默认的inotify机制提供了三个调控参数:max_queue_events , max_user_instances,max_user_watches,分别表示监控事件队列(16 384)、最多监控实例数(128)、每个实例最多监控文件数〈8192)。

查看监控的参数[root@Linux01 ~]# cat /proc/sys/fs/inotify/max_queued_events 
16384
[root@Linux01 ~]# cat /proc/sys/fs/inotify/max_user_instances 
128
[root@Linux01 ~]# cat /proc/sys/fs/inotify/max_user_watches
8192

当要监控的目录.文件数量较多或者变化较频繁时,建议加大这三个参数的值。例如,可直接修改/etc/sysctl , conf配置文件.将管理队列设为32768,实例数设为1024.监控数设为1048576,通常情况下,监控数所设的值建议大于监控目标的总文件数。

[root@Linux01 ~]# vim /etc/sysctl.conffs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576[root@Linux01 ~]# sysctl -p   //更新数据

去FTP 拿一个 inotify-tools 软件 

[root@Linux01 ~]# tar zxf inotify-tools-3.14.tar.gz [root@Linux01 ~]# cd inotify-tools-3.14/
[root@Linux01 inotify-tools-3.14]# ./configure [root@Linux01 inotify-tools-3.14]# make[root@Linux01 inotify-tools-3.14]# make  install

以监控网站目录/var/www /html为例,可以先执行“inotifywait”命令,然后在另--个终端向/var/www/html目录下添加文件、移动文件.跟踪屏幕输出结果。其中,选项“--e”用来指定要监控哪些事件,选项“-m”表示持续监控,选项“一r”表示递归整个目录,选项“-q”简化输出信息。

192.168.9.30 配置  (开两个窗口)第一个窗口
[root@Linux01 ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html第二个窗口
[root@Linux01 ~]# cd /var/www/html/
[root@Linux01 html]# echo aaaa >> test.html[root@Linux01 html]# ls
bdqn1com  bdqn2com  test.html[root@Linux01 html]#  rm -rf test.html 
[root@Linux01 html]# touch abc.txt
[root@Linux01 html]# mv abc.txt /opt/[root@Linux01 ~]# mkdir /myweb   //创建 myweb 文件夹

 在第二个窗口修改 或者删除东西 第一个窗口可以实时监控

 

编写触发式同步脚本

[root@Linux01 ~]# vim /opt/inotify_rsync.sh#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /var/www/html"
RSYNC_CMD="rsync -rav /var/www/html root@192.168.9.31:/myweb"
$INOTIFY_CMD | while reab DIRECTORY EVENT FILE   //一旦读取到 $INOTIFY_CMD 命令的输出结果就执行 do 后面的语句
do$RSYNC_CMD
done[root@Linux01 ~]# chmod +x /opt/inotify_rsync.sh    //给一个执行权限[root@Linux01 ~]# echo '/opt/inotify_rsync.sh' >> /etc/rc.local

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/226029.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

k8s快速搭建

VMware16Pro虚拟机安装教程VMware16.1.2安装及各版本密钥CentOS7.4的安装包:提取码:lp6qVMware搭建Centos7虚拟机教程 搭建完一个镜像 关机 拍摄一个快照,克隆两个作为子节点 0. 环境准备 在开始之前,部署Kubernetes集群机器需要满足以下几个条件&#…

使用Python Flask搭建一个简单的Web站点并发布到公网上访问

文章目录 前言1. 安装部署Flask并制作SayHello问答界面2. 安装Cpolar内网穿透3. 配置Flask的问答界面公网访问地址4. 公网远程访问Flask的问答界面 前言 Flask是一个Python编写的Web微框架,让我们可以使用Python语言快速实现一个网站或Web服务,本期教程…

【linux】touch的基本使用

碎碎念 刚接触linux时候的几个最基础的命令之一,用来创建文件。如果使用touch --help的时候会发现作者对于touch的简介:Update the access and modification times of each FILE to the current time.用于修改文件的访问和时间戳 带我的leader属于那种…

Mediapipe绘制实时3d铰接骨架图——Mediapipe实时姿态估计

一、前言 大约两年前,基于自己的理解我曾写了几篇关于Mediapipe的文章,似乎帮助到了一些人。这两年,忙于比赛、实习、毕业、工作和考研。上篇文章已经是一年多前发的了。这段时间收到很多私信和评论,请原谅无法一一回复了。我将尝…

vue3老项目如何引入vite

vue3老项目如何引入vite 安装 npm install vite vitejs/plugin-vue --save-dev Vite官方中文文档修改package.json文件 在 npm scripts 中使用 vite 执行文件 "scripts": {"serve": "vite","build": "vite build","pr…

关于Redis面试题

前言 之前为了准备面试,收集整理了一些面试题。 本篇文章更新时间2023年12月27日。 最新的内容可以看我的原文:https://www.yuque.com/wfzx/ninzck/cbf0cxkrr6s1kniv Redis 是什么 全名:远程字典服务。这是一个开源的在内存中的数据结构存…

一、C++简介

C语言的发展史 1983年,贝尔实验室(Bell Labs)的Bjarne Stroustrup发明了C。 C在C语言的基础上进行了扩充和完善,是一种面向对象程序设计(OOP)语言。 Stroustrup说:“这个名字象征着源自于C语言变…

模式识别与机器学习-SVM(线性支持向量机)

线性支持向量机 线性支持向量机间隔距离学习的对偶算法算法:线性可分支持向量机学习算法线性可分支持向量机例子 谨以此博客作为复习期间的记录 线性支持向量机 在以上四条线中,都可以作为分割平面,误差率也都为0。但是那个分割平面效果更好呢&#xff1…

Postman常见问题及解决方法

1、网络连接问题 如果Postman无法发送请求或接收响应,可以尝试以下操作: 检查网络连接是否正常,包括检查网络设置、代理设置等。 确认请求的URL是否正确,并检查是否使用了正确的HTTP方法(例如GET、POST、PUT等&#…

Linux操作系统——进程(六) 进程地址空间

进程地址空间 C/C程序员一般将我们所写的程序看成如下这种结构: 我们所写的程序通过编译编译之后就可以以这样的方式进行分布. 我们先通过编写一段C语言代码来进行验证: 运行结果: 我们可以看出来上述地址遵循的就是我们上面画的一种结构。…

H5向微信小程序发送信息(小程序web-view打开H5)

引入weixin-js-sdk npm i weixin-js-sdk 页面引入 // 引入wxjsimport wx from "weixin-js-sdk"; 点击触发方法 methods: {goweap(id){console.log(wx);// H5传递数据 (navigateBack)wx.miniProgram.navigateBack({delta: 1});wx.min…

探究element-ui 2.15.8中<el-input>的keydown事件无效问题

一、问题描述 今天看到一个问题&#xff0c;在用Vue2element-ui 2.15.8开发时&#xff0c;使用input组件绑定keydown事件没有任何效果。 <template><div id"app"><el-input v-model"content" placeholder"请输入" keydown&quo…

播放海康摄像头直播流使用笔记

1、将海康摄像头绑定到萤石云平台&#xff0c;并查看直播流 2、项目中使用 1、安装hls cnpm i hls.js 2、封装组件&#xff08;在components文件夹下新建bodyCapture文件夹下index.vue&#xff09; <template><el-dialogtitle"遗体抓拍"class"bo…

gin框架使用系列之六——自定义中间件

系列目录 《gin框架使用系列之一——快速启动和url分组》《gin框架使用系列之二——uri占位符和占位符变量的获取》《gin框架使用系列之三——获取表单数据》《gin框架使用系列之四——json和protobuf的渲染》《gin框架使用系列之五——表单校验》 一、gin中间件概述 gin中将…

C语言实验1:C程序的运行环境和运行C程序的方法

一、算法原理 这是学C语言的入门&#xff0c;并不需要很高深的知识&#xff0c;一个hello world 或者一个简单的加法即可 二、实验要求 了解所用的计算机系统的基本操作方法&#xff0c;学会独立使用该系统。 了解在该系统上如何编辑、编译、连接和运行一个C程序。 通过运…

Java在SpringCloud中自定义Gateway负载均衡策略

Java在SpringCloud中自定义Gateway负载均衡策略 一、前言 spring-cloud-starter-netflix-ribbon已经不再更新了&#xff0c;最新版本是2.2.10.RELEASE&#xff0c;最后更新时间是2021年11月18日&#xff0c;详细信息可以看maven官方仓库&#xff1a;org.springframework.clou…

vue3+elementPlus:el-drawer新增修改弹窗复用

在el-drawer的属性里设置:title属性&#xff0c;和重置函数 //html<!-- 弹窗 --><el-drawerv-model"drawer":title"title":size"505":direction"direction":before-close"handleClose"><el-formlabel-posit…

linux如何清理磁盘,使得数据难以恢复

sda 是硬盘&#xff0c;sda1 和 sda2 是硬盘的两个分区。centos-root 是一个逻辑卷&#xff0c;挂载在根目录 /。 /dev/sda 是硬盘&#xff0c;/dev/sda1 和 /dev/sda2 是硬盘的两个分区。 [rootnode2 ~]# dd if/dev/urandom of/dev/sda bs4M这个命令将从 /dev/urandom 读取随…

WPF实战项目二十二(客户端):首页添加备忘录与待办事项

1、在View文件夹下新建文件夹Dialog&#xff0c;新建View&#xff1a;AddMemoView、AddToDoView <UserControlx:Class"WPFProject.Views.Dialogs.AddToDoView"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"http://s…

Pandas教程(三)—— 数据清洗与准备

1.处理缺失值 1.1 数据删除函数 作用&#xff1a;删除Dataframe某行或某列的数据 语法&#xff1a;df.drop&#xff08; labels [ ] &#xff09; drop函数的几个参数&#xff1a; labels &#xff1a;接收一个列表&#xff0c;内含删除行 / 列的索引编号或索引名 axis &…