文章目录

  • 一、rsync同步简介
  • 二、配置rsync源服务器
  • 三、rsync远程同步实验
    • 3.1实验环境
    • 3.2实验步骤
  • 四、rsync实时同步
    • 4.1为什么要实时同步
    • 4.2关于inotify
    • 4.3rsync+inotify实时同步
    • 4.4rsync+inotify结合进行实时上行同步(上传)实验
      • 实验环境:
      • 实验步骤:
      • 实验注意事项:

一、rsync同步简介

●一款快速增量备份工具

  Remote Sync,远程同步支持本地复制,或者与其他SSH、rsync主机同步

●应用场景

  “推”即由客户端推送数据至服务器,比如个人电脑上传数据至云盘。“拉”即由客户端拉取服务器上的数据,比如利用个人电脑下载云盘文件。

●rsync 包括如下的一些特性

 1. 能更新整个目录树和文件系统;2. 有选择性的保持符号链链、硬链接、文件属性、权限、设备以及时间等;3. 传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用。4. 能用rsh、ssh 或直接端口做为传输端口;5. 支持匿名rsync 同步文件,是理想的镜像工具;

Rsync可以通过rsh或ssh使用,也能以daemon模式去运行,在以daemon方式运行时Rsync server会打开一个873端口,等待客户端去连接。
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负责响应来自客机的rsync同步操作的服务器称为备份源。

二、配置rsync源服务器

2.1rsync同步源简介
指备份操作的远程服务器,也称为备份源

2.2如何配置rsync源
●基本思路

  修改rsyncd.conf配置文件、独立的密码文件启用rsync的--daemon模式

●应用示例

  用户backuper,允许下行同步操作的目录为/var/www/html

●配置文件rsyncd.conf

  语法类似于Samba配置认证配置auth users、secrets file,不加则为匿名(nobody)

●rsync账号文件

  采用“用户名:密码”的记录格式,每行一个用户记录独立的账号数据,不依赖于系统账号(安全)

●如何启动和关闭rsync

  启动rsync:rsync --daemon关闭rsync:kill $(cat /var/run/rsyncd.pid)

2.3如何使用rsync备份工具

rsync命令的用法rsync [选项] 原始位置 目标位置
常用选项-a:归档模式,递归并保留对象属性,等同于-rlptgoD-v:显示同步过程的详细信息-z:在传输文件时进行压缩-H:保留硬连接文件-A:保留ACL属性信息--delete:删除目标位置有而原始位置没有的文件--checksum:根据对象的校验和来决定是否跳过文件

三、rsync远程同步实验

3.1实验环境

3.2实验步骤

源端服务器配置:
1.确认rsync是否已经安装(Centos 7.6自带安装)

[root@localhost ~]# rpm -q rsync
rsync-3.1.2-4.el7.x86_64

2.修改配置文件

[root@localhost ~]# vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes           #禁锢家目录
address = 14.0.0.10     #提供同步服务的地址
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 14.0.0.0/24   #允许同步的网段[wwwroot]
path = /var/www/html   #同步的目录
comment = www.test.com
read only = yes      #只读模式开启
dont compress   = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2   #这些结尾的文件同步时不再压缩
auth users = backuper
secrets file = /etc/rsyncd_users.db   #用户密码存放在secrets file中

3.创建backuper用户的密码文件

[root@localhost ~]# touch /etc/rsyncd_users.db
[root@localhost ~]# vim /etc/rsyncd_users.db
backuper:abc123

4.服务端的密码文件要600权限

[root@localhost html]# chmod 600 /etc/rsyncd_users.db

5.启动服务

[root@localhost html]# rsync --daemon

6.查看状态

[root@localhost html]# netstat -ntap | grep rsync

客户端验证同步功能:
需要输密码的两种方式:
方式一:

[root@localhost opt]# rsync -avz backuper@14.0.0.10::wwwroot /opt/
Password:
receiving incremental file list
./
index.html
index1.html
index2.html

方式二:

[root@localhost opt]# rsync -avz rsync://backuper@14.0.0.10/wwwroot /opt/
Password:
receiving incremental file list
./
index.html
index1.html
index2.html

免密方式同步文件:

要先在客户端本地创建密码文件/etc/server.pass
[root@localhost etc]# vim server.pass
[root@localhost etc]# ll | grep server.pass
-rw-r--r--.  1 root root        7 9月  10 16:43 server.pass
[root@localhost etc]# chmod 600 server.pass
[root@localhost etc]# rsync -az --delete --password-file=/etc/server.pass backuper@14.0.0.10::wwwroot /opt/
[root@localhost opt]# ls
index1.html  index2.html  index.html

四、rsync实时同步

4.1为什么要实时同步

●定期同步的不足
执行备份的时间固定,延迟明显,实时性差
当同步源长期不变化时,密集的定期任务是不必要的
●实时同步的优点
一旦同步源出现变化,立即启动备份
只要同步源无变化,则不执行备份

4.2关于inotify

●Linux内核的inotify机制
从版本2.6.13开始提供
可以监控文件系统的变动情况,并做出通知响应
辅助软件:inotify-tools

4.3rsync+inotify实时同步

●调整inotify内核参数

  max_queue_events:监控事件队列大小max_user_instances:最多监控实例数max_user_watches:每个实例最多监控文件数监控数要大于监控目标的总文件数

●安装inotify-tools辅助工具

  inotifywait:用于持续监控,实时输出结果inotifywatch:用于短期监控,任务完成后再出结果
示例:inotifywait -mrq -e modify,create,move,delete /opt/-m:持续进行监控-r:递归监控所有子对象-q:简化输出信息-e:指定要监控哪些事件类型modify:修改;create:创建;move:移动;delete:删除

●通过inotifywait触发rsync同步操作

  使用while、read持续获取监控结果根据结果可以作进一步判断,决定执行何种操作

4.4rsync+inotify结合进行实时上行同步(上传)实验

实验环境:


基于前面rsync同步实验继续
源端地址:14.0.0.10;安装软件:rsync
客户端地址:14.0.0.20;安装软件:rsync、inotify-tools

实验步骤:

1.源端配置文件中将只读选项更改为no;更改配置文件后需要重启服务,详见下面的实验注意事项

[root@localhost ~]# vim /etc/rsyncd.conf
read only = no

2.客户端更改内核参数,指定队列大小,最多监控实例数,每个实例最多监控文件数

[root@localhost opt]# vim /etc/sysctl.conf
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
[root@localhost opt]# sysctl -p

3.安装inotify-tools工具

[root@slave ~]# tar zxf inotify-tools-3.14.tar.gz
[root@slave ~]# cd inotify-tools-3.14/
[root@slave inotify-tools-3.14]# yum install gcc gcc-c++ -y
[root@slave inotify-tools-3.14]# ./configure
[root@slave inotify-tools-3.14]# make && make install

4.测试inotifywait监控命令是否正常使用

[root@localhost ~]# inotifywait -mrq -e modify,create,move,delete /opt/(输完这条命令后再开一个终端在/opt目录下进行写入或者读写等操作)
/opt/ CREATE c.txt
/opt/ CREATE d.txt

5.客户端上编写脚本,将inotify监控和rsync远程同步结合起来

[root@localhost ~]# vim inotify.sh
#!/bin/bash
INOTIFY="inotifywait -mrq -e modify,create,attrib,move,delete /opt"
RSYNC="rsync -azH --delete --password-file=/etc/server.pass /opt/  backuper@14.0.0.10::wwwroot/"
$INOTIFY | while read DIRECTORY EVENT FILE   #逐条读取监控记录
doif [ $(pgrep rsync | wc -l) -le 0 ];then$RSYNCfi
done
注意:将源端/var/www/html/目录设置权限为777,否则远程同步无法写入

6.运行脚本,在客户端/opt目录下创建文件,查看源端/var/www/html目录是否同步到
#在客户端/opt目录下创建文件b.txt,原来有a.txt

[root@localhost opt]# touch b.txt

#查看源端/var/www/html目录,新建的和原来就存在的文件都成功同步,且属主属组均为nobody用户

[root@localhost ~]# cd /var/www/html/
[root@localhost html]# ll
总用量 4
-rw-------. 1 nobody nobody 6 9月  10 21:07 a.txt
-rw-------. 1 nobody nobody 0 9月  10 21:07 b.txt

实验注意事项:

1.注意:kill pid号和kill -9 pid号的区别:后者不会删除pid文件,导致服务起不来

[root@localhost html]# cd /var/run/
[root@localhost run]# cat rsyncd.pid
14293
[root@localhost run]# kill 14293
[root@localhost run]# ll | grep rsyncd.pid
[root@localhost run]# rsync --daemon
[root@localhost run]# ll | grep rsyncd.pid
-rw-r--r--.  1 root           root              6 9月  10 16:39 rsyncd.pid
[root@localhost run]# cat rsyncd.pid
14957
[root@localhost run]# kill -9 14957   #kill -9 不会删除pid文件
[root@localhost run]# ll | grep rsyncd.pid
-rw-r--r--.  1 root           root              6 9月  10 16:39 rsyncd.pid
[root@localhost run]# rsync --daemon
failed to create pid file /var/run/rsyncd.pid: File exists

2.使用如下命令进行上行同步(上传)时,本地目录最后要加上/,否则会将目录同步到对方目标文件夹下,而不仅仅是同步本地目录下的文件
例如:
#在客户端输入以下命令

rsync -azH --delete --password-file=/etc/server.pass /var/www/html backuper@14.0.0.10::wwwroot/

#源端查看/var/www/html同步结果,会发现是整个html目录一起同步过来了

[root@localhost html]# ls
html
[root@localhost html]# cd html/
[root@localhost html]# ls
index1.html  index.html

快速入门rsync远程同步相关推荐

  1. rsync远程同步的基本配置与使用

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

  2. rsync 远程同步

    rsync 远程同步 前言 一.Rsync简介 (1)rsync介绍 (2)rsync同步方式 二.rsync同步源 (1)配置rsync源 ①基本思路 ②配置文件rsync.conf ③独立的账号密 ...

  3. 如何实现rsync远程同步和inotify实时同步

    目录 一:rsync介绍 1.1:rsync 服务的模式 1.2:rsync服务原理 1.3:配置rsync源思路 二.搭建rsync服务 2.1:建立rsync配置文件 2.2:客户机服务器B测试 ...

  4. rsync远程同步+inotify监控

    rsync远程同步+inotify 一.基本理论概述 1.1 前言概述 1.2 rsync服务器概述 1.3 rsync同步方式 二.实验操作 2.1 rsync本地复制 2.2 rsync服务器和客 ...

  5. rsync远程同步及结合inotify实现实时同步

    rsync远程同步及结合inotify实现实时同步 rsync 命令格式 常用选项 实现免交互 rsync同步配置 环境准备 同步源编写rsync配置文件 创建数据文件 确保读取权限 开启服务 sla ...

  6. rsync 远程同步部署 上行下行同步

    rsync远程同步 一.rsync (Remote Sync,远程同步) 二.部署rsync源服务器 三.发起端 四.发起端配置 rsync+inotify 一.rsync (Remote Sync, ...

  7. Rsync远程同步+inotify监控实时同步概述,部署

    文章目录 一,rsync 概述 1.rsync服务器 2.rsync同步方式 3.rsync特性 二.rsync与cp.scp对比 三,rsync命令 四,rsync 本地复制实例 五,rsync同步 ...

  8. rsync—远程同步

    目录 一:rsync概述 1.1rsync简介 1.2rsync同步方式 二:rsync特性 三:rsync同步源 四:rsync与cp.scp对比 五:常用rsync命令 六:rsync本地复制实例 ...

  9. rsync远程同步和inotify实时同步

    目录 引言 一.rsync远程同步 1.Rsync介绍 2.同步方式 3.增量备份 4

最新文章

  1. windows自动关闭无响应程序
  2. python【数据结构与算法】 python3 deque模块(双端队列)
  3. iphone11系统输入框的光标位置不正常
  4. 计算机安全可靠替代工程,基于安全可靠软硬件的党政军OA系统的整系统优化方法与研究-计算机技术专业论文.docx...
  5. 三种主流流媒体协议比较
  6. 编译 Apache Karaf 2.2.9遇到找不到jar包问题的解决方案
  7. java 对象和类
  8. 一道企业shell编程实战题-看看谁能快速搞定
  9. JavaScript-在当前显示区范围内实现点不到的小方块
  10. 主题模型TopicModel:LSA(隐性语义分析)模型和其实现的早期方法SVD
  11. 处置Linux下Oracle Tomcat 8080端口辩说
  12. 「业务架构」商业模式画布
  13. 新浪微博、腾讯微博开放平台整合DEMO分享
  14. 戴尔t40服务器自动开机,新安装的戴尔T40服务器风扇不转了是什么原因?
  15. Ubuntu环境下挂载新硬盘
  16. [BZOJ4784][UOJ290][ZJOI017]仙人掌-树形DP
  17. 基于群智能算法的函数最值优化问题
  18. ts15_Forecast multiple seas_mSTL_make_subplot_rMSPE_UCM_date format_NeuralProphet_changepoint_StateS
  19. 狠补基础-数学+算法角度讲解卷积层,激活函数,池化层,Dropout层,BN层,全链接层
  20. Error in nextTick: TypeError: Cannot read property 'children' of undefined 解决

热门文章

  1. esriControlsMousePointer控制鼠标指针选项
  2. PCQQ ECDH算法C++实现
  3. 电脑测试瓶颈的软件,只需一招教你找出电脑的性能瓶颈-怎么测试电脑性能
  4. 软件测试师具备的素质_软件测试工程师应该具备哪些素质?
  5. 有趣的网站分享——pornhub风格生成器
  6. 手机应用软件下载导航php源码_轻量级网址导航程序壹网分类目录v2.5源码免费下载...
  7. 全国高校免费网上图书馆入口地址大全
  8. 购买已备案未注册的域名的步骤
  9. javascript学习笔记 - import存在重复引用js问题么(附详细import说明)
  10. C语言实现猜数字游戏(通俗易懂)