系统学习Linux-Rsync远程数据同步服务(三)

一、概述

rsync是linux 下一个远程数据同步工具

他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输

会对比两个文件的不同部分,传输差异部分,因此传输速度相当快

rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及递归拷贝

二、特性

快速

第一次传输全部,下一次传输差异

rsync在传输过程中可以实行压缩和解压缩,使用更少的带宽

安全

可以使用scp、ssh等方式传输

直接通过socket连接

支持匿名传输、方便进行网站镜像

三、应用场景

增量同步

备份迁移

四、数据的同步方式

数据备份:拉取(下载)   pull

数据恢复:推送(上传)   push

五、rsync传输模式

本地传输  本地同步数据,类似于cp

远程传输  远程同步数据,类似于scp

守护进程  通过模块化的方式实现批量传输

六、rsync应用

安装

yum -y install rsync

如果已经安装,直接启动

systemctl start rsyncd

监听端口号

TCP/873

七、rsync命令

格式

rsync [选项] 原始位置 目标位置

作为远程命令

拉取  rsync [OPTION...] [USER@]HOST:SRC... [DEST]

推送  rsync [OPTION...] SRC... [USER@]HOST:DEST

作为rsync服务

拉取  rsync [OPTION...] [USER@]HOST::SRC... [DEST]

         rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]

推送  rsync [OPTION...] SRC... [USER@]HOST::DEST

          rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

选项

-a  归档模式,递归并保留对象属性,等同于-rlptgoD

-v  -verbose           显示同步过程的详细信息

-z  在传输文件时进行压缩

举例

本地  rsync  -avz  /abc  /opt

          rsync  -avz  abc/  /opt

远程   rsync -avz root@192.168.2.7:/etc/hostname  /root/

           rsync -avz  /root/hostname root@192.168.2.7:/etc/hostname 

配置文件

/etc/rsyncd.conf

全局配置

address独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP
port指定 rsync 守护进程监听的端口号,默认 873
pid filersync 的守护进程将其 PID 写入指定的文件
log file指定 rsync 守护进程的日志文件,而不将日志发送给 syslog
syslog facility指定 rsync 发送日志消息给 syslog 时的消息级别
socket options指定自定义 TCP 选项
lockfile指定rsync的锁文件存放路径
timeout超时时间

模块配置

path指定当前模块的同步路径,该参数是必须指定的
comment给模块指定一个描述
use chroot在服务运行时要不要把他锁定在家目录,默认为 true
uid和gid 指定rsync运行用户和用户组,默认nobody
max connections最大并发连接数,0为不限制
lock file指定支持 max connections的锁文件。默认/var/run/rsyncd.lock
list指定列出模块列表时,该模块是否被列出。默认为 true
read only只读选择,默认true
write only只写选择,不让客户端从服务器上下载文件。默认false
ignore errors忽略IO错误,默认true
ignore nonreadable指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。
dont compress用来指定那些在传输之前不进行压缩处理的文件。
hosts allow指定哪些主机客户允许连接该模块。默认值为 *
hosts deny指定哪些主机客户不允许连接该模块
auth users指定用于上传的用户名
secrets files指定密码文件

守护进程传输

配置

uid=rsync
gid=rsync
fake super=yes # 用于允许非root用户,在备份目录创建文件
list=false# 默认true,允许查看本机有哪些模块
auth users=rsync_backup# 用于指定认证用户
secrets file=/etc/rsync.passwd# 指定认证用户密码
read only = false
max connections=4# 允许最大连接数
read only=false 默认yes,模块目录只读权限
ignore errors# 屏蔽错误报错
timeout=900# 指定rsync传输超时时间
[backup]
path=/backup

创建用户  

useradd rsync -s /sbin/nologin -M

创建认证用户的密码

echo 'rsync_backup:123456' >/etc/rsync.passwd

chmod 600 /etc/rsync.passwd

准备模块目录

mkdir /backup

chown rsync.rsync /backup

重启服务

systemctl restart rsyncd

客户端远程传输

rsync -avz /etc/hosts rsync_backup@192.168.2.62::backup

通过密码文件实现免密传输

vim /etc/rsync.passwd

chmod   600 /etc/rsync.passwd

rsync -avz /etc/hosts rsync_backup@192.168.2.62::backup --password-file /etc/rsync.passwd

实验练习

1.使用认证用户为jx_名字缩写,认证密码为班级编号

2.模块名称为juexing

3.自行修改文件内容,在服务器上实现同步

vim /etc/rsyncd.conf   写入红框内容

useradd rsync -s /sbin/nologin -M  创建rsync用户并给到命令权限

echo 'jx_lwj:2305' >/etc/rsync.passwd  给认证用户设置密码

chmod 600 /etc/rsync.passwd  并设置权限

mkdir /juexing  准备模块目录

chown rsync.rsync /juexing  目录属组属主要是给到sbin命令权限的用户与组

systemctl restart rsyncd    重启服务

打开客户端

rsync -avz /etc/hosts jx_lwj@192.168.1.1::juexing

测试成功后设置通过密码文件实现免密传输

vim /etc/rsync.passwd  写入刚才设置的密码2305

chmod 600 /etc/rsync.passwd   设置密码文件权限

rsync -avz /etc/hosts jx_lwj@192.168.1.1::juexing --password-file /etc/rsync.passwd  自动读取密码文件在/etc/rsync.passwd


rsync+inotfy实时同步

服务器端

安装网站服务,启动,但是不写首页文件

修改主配置文件

vim /etc/rsync.config

uid = root
gid = root

[wwwroot]
    path = /var/www/html
    comment = backup export area
    read only = false
    hosts allow = 192.168.1.0/24

开发客户端

安装inotify工具

inotify-tools

tar xf  inotify-tools-3.14.tar.gz

./configure && make && make install

 

配置内核参数

vim /etc/sysctl.conf

fs.inotify.max_user_instances = 1024

fs.inotify.max_queued_events = 16384

fs.inotify.max_user_watches=1048576

sysctl -P

inotifywait -mrq -e modify,create,move,delete /var/www/html

这条命令输入后  可以实时观察写入、删除等

编写脚本

vim /opt/inotify_rsync.sh

#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/"
RSYNC_CMD="rsync -azH --delete /var/www/html/192.168.1.1::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
$RSYNC_CMD
done

 

赋予执行权限

chmod +x inotify_rsync.sh

 

写入文件(开机自启)

vim /etc/rc.local

/root/inotify_rsync.sh

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT:利用人工智能助推教育创新

当前,世界正需要一个更加开放的、更加个性化的学习空间,学生的个性发展和生存发展应该被关注和尊重,课程应该引导学生掌握有用的东西,学生之间的差距应该被正视,教育成功的标准也要被重新定义。过去,我们总…

N天爆肝数据库——MySQL(5)

本文主要对索引进行了讲解 这里写目录标题 本文主要对索引进行了讲解索引概述介绍优缺点索引结构二叉树红黑树B-Tree(多路平衡查找树)BTreeBTree与B-Tree区别: HashHash索引特点 为什么InnoDB存储引擎选择使用BTree索引结构?索引分类在InnoDB存储引擎中,…

基于微信小程序的求职招聘系统设计与实现(Java+spring boot+MySQL+微信小程序)

获取源码或者论文请私信博主 演示视频: 基于微信小程序的求职招聘系统设计与实现(Javaspring bootMySQL微信小程序) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java s…

(五)「消息队列」之 RabbitMQ 主题(使用 .NET 客户端)

0、引言 先决条件 本教程假设 RabbitMQ 已安装并且正在 本地主机 的标准端口(5672)上运行。如果您使用了不同的主机、端口或凭证,则要求调整连接设置。 获取帮助 如果您在阅读本教程时遇到问题,可以通过邮件列表或者 RabbitMQ 社区…

【C++】list的使用及底层实现原理

本篇文章对list的使用进行了举例讲解。同时也对底层实现进行了讲解。底层的实现关键在于迭代器的实现。希望本篇文章会对你有所帮助。 文章目录 一、list的使用 1、1 list的介绍 1、2 list的使用 1、2、1 list的常规使用 1、2、2 list的sort讲解 二、list的底层实现 2、1 初构…

windows环境hadoop报错‘D:\Program‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

Hadoop版本为2.7.3,在环境配置好后,检查hadoop安装版本,报如标题所示错误,尝试网上主流的几种方法均无效。 错误:windows环境hadoop报错’D:\Program’ 不是内部或外部命令,也不是可运行的程序 或批处理文件。 错误方…

perl输出中文乱码【win10】

perl输出中文乱码 运行的时候输出的内容变成了中文乱码,原因首先来查找一下自己的perl的模块里面是否有Encode-CN。请运行打开你的cmd并输入perldoc -l Encode::CN 如果出现了地址 则就是有,如果没有需要进行该模块的安装。 安装方式有很多种&#xff0…

STM32F407-- DMA使用

目录 1. DMA结构体 STM32F103: STM32F407: 2. F4系列实现存储器到存储器数据传输 1)结构体配置&初始化 2)主函数 补充知识点:关于变量存储的位置,关于内部存储器一般存储什么内容 3. F4系列实现…

机器学习 day26(多标签分类,Adam算法,卷积层)

1. 多标签分类 多标签分类:对于单个输入特征,输出多个不同的标签y多类分类:对于单个输入特征,输出单个标签y,但y的可能结果有多个 2. 为多标签分类构建神经网络模型 我们可以构建三个不同的神经网络模型来分别预测…

C++第四讲

思维导图 仿照string类&#xff0c;实现myString类 /* ---------------------------------author&#xff1a;YoungZorncreated on 2023/7/19 19:20.--------------------------------- */ #include<iostream> #include<cstring>using namespace std;class myStri…

搜索引擎elasticsearch :安装elasticsearch (包含安装组件kibana、IK分词器、部署es集群)

文章目录 安装elasticsearch1.部署单点es1.1.创建网络1.2.加载镜像1.3.运行 2.部署kibana2.1.部署2.2.DevTools2.3 分词问题(中文不友好) 3.安装IK分词器3.1.在线安装ik插件&#xff08;较慢&#xff09;3.2.离线安装ik插件&#xff08;推荐&#xff09;1&#xff09;查看数据卷…

APP测试学习之Android模拟器Genymotion安装配置不上解决方法以及adb基本使用

Android模拟器Genymotion安装配置不上解决方法以及adb基本使用 Genymotion下载安装配置遇见的问题解决方法adb基本使用 Genymotion下载 1.首先进入官网 https://www.genymotion.com/ 2.在官网注册一个账号 https://www-v1.genymotion.com/account/login/ 3.下载 https://www.g…

Git源代码管理方案

背景 现阶段的Git源代码管理上有一些漏洞&#xff0c;导致在每次上线发布的时间长、出问题&#xff0c;对整体产品的进度有一定的影响。 作用 新的Git源代码管理方案有以下作用&#xff1a; 多功能并行开发时&#xff0c;测试人员可以根据需求任务分配测试自己的功能&#…

单片机第一季:零基础9——直流电机和步进电机

目录 1&#xff0c;直流电机 2&#xff0c;步进电机 1&#xff0c;直流电机 直流电机是指能将直流电能转换成机械能&#xff08;直流电动机&#xff09;或将机械能转换成直流电能&#xff08;直流发电机&#xff09;的旋转电机。它是能实现直流电能和机械能互相转换的电机。…

大模型开发(八):基于思维链(CoT)的进阶提示工程

全文共8000余字&#xff0c;预计阅读时间约16~27分钟 | 满满干货&#xff08;附复现代码&#xff09;&#xff0c;建议收藏&#xff01; 本文目标&#xff1a;介绍提示工程基础类方法、思维链提示方法和LtM的提示方法&#xff0c;并复现解决论文中四个经典推理问题。 代码下载…

Spring实现文件上传,文件上传

第一步&#xff1a;创建jsp文件 创建form表单 提交文件是post 文件上传的表单 服务端能不能获得数据&#xff0c;能 实现单文件上传的步骤&#xff1a; 导入相应的坐标&#xff1a;在pom.xml文件中进行导入 再导入这份&#xff1a; 第二步&#xff0c;在spring-MVC的上传中去配…

React中使用Redux

1.为什么要使用redux redux是一个专门用于状态管理的一个库&#xff0c;和vue中的vuex功能类似。其中核心点就是状态的管理。虽然我们无论在vue还是在react中我们组件间的通行都可以使用消息总线或者父子组件间的消息传递来进行操作。但是如果我们需要A组件的状态在其他十个或者…

mongodb,redis,mysql 区别

一、MySQL 关系型数据库。 在不同的引擎上有不同 的存储方式。 查询语句是使用传统的sql语句&#xff0c;拥有较为成熟的体系&#xff0c;成熟度很高。 开源数据库的份额在不断增加&#xff0c;mysql的份额页在持续增长。 缺点就是在海量数据处理的时候效率会显著变慢。 二、Mo…

Linux·从 URL 输入到页面展现到底发生什么?

打开浏览器从输入网址到网页呈现在大家面前&#xff0c;背后到底发生了什么&#xff1f;经历怎么样的一个过程&#xff1f;先给大家来张总体流程图&#xff0c;具体步骤请看下文分解&#xff01; 总体来说分为以下几个过程: DNS 解析:将域名解析成 IP 地址TCP 连接&#xff1a…

学习babylon.js --- [2] 项目工程搭建

本文讲述如何搭建babylonjs的项目工程。 一 准备 首先创建一个目录叫MyProject&#xff0c;然后在这个目录里再创建三个目录&#xff1a;dist&#xff0c;public和src&#xff0c;如下&#xff0c; 接着在src目录里添加一个文件叫app.ts&#xff0c;本文使用typescript&#…