快速入门rsync远程同步
文章目录
- 一、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远程同步相关推荐
- rsync远程同步的基本配置与使用
rsync是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份,镜像服务器等应用. rsync的官 ...
- rsync 远程同步
rsync 远程同步 前言 一.Rsync简介 (1)rsync介绍 (2)rsync同步方式 二.rsync同步源 (1)配置rsync源 ①基本思路 ②配置文件rsync.conf ③独立的账号密 ...
- 如何实现rsync远程同步和inotify实时同步
目录 一:rsync介绍 1.1:rsync 服务的模式 1.2:rsync服务原理 1.3:配置rsync源思路 二.搭建rsync服务 2.1:建立rsync配置文件 2.2:客户机服务器B测试 ...
- rsync远程同步+inotify监控
rsync远程同步+inotify 一.基本理论概述 1.1 前言概述 1.2 rsync服务器概述 1.3 rsync同步方式 二.实验操作 2.1 rsync本地复制 2.2 rsync服务器和客 ...
- rsync远程同步及结合inotify实现实时同步
rsync远程同步及结合inotify实现实时同步 rsync 命令格式 常用选项 实现免交互 rsync同步配置 环境准备 同步源编写rsync配置文件 创建数据文件 确保读取权限 开启服务 sla ...
- rsync 远程同步部署 上行下行同步
rsync远程同步 一.rsync (Remote Sync,远程同步) 二.部署rsync源服务器 三.发起端 四.发起端配置 rsync+inotify 一.rsync (Remote Sync, ...
- Rsync远程同步+inotify监控实时同步概述,部署
文章目录 一,rsync 概述 1.rsync服务器 2.rsync同步方式 3.rsync特性 二.rsync与cp.scp对比 三,rsync命令 四,rsync 本地复制实例 五,rsync同步 ...
- rsync—远程同步
目录 一:rsync概述 1.1rsync简介 1.2rsync同步方式 二:rsync特性 三:rsync同步源 四:rsync与cp.scp对比 五:常用rsync命令 六:rsync本地复制实例 ...
- rsync远程同步和inotify实时同步
目录 引言 一.rsync远程同步 1.Rsync介绍 2.同步方式 3.增量备份 4
最新文章
- windows自动关闭无响应程序
- python【数据结构与算法】 python3 deque模块(双端队列)
- iphone11系统输入框的光标位置不正常
- 计算机安全可靠替代工程,基于安全可靠软硬件的党政军OA系统的整系统优化方法与研究-计算机技术专业论文.docx...
- 三种主流流媒体协议比较
- 编译 Apache Karaf 2.2.9遇到找不到jar包问题的解决方案
- java 对象和类
- 一道企业shell编程实战题-看看谁能快速搞定
- JavaScript-在当前显示区范围内实现点不到的小方块
- 主题模型TopicModel:LSA(隐性语义分析)模型和其实现的早期方法SVD
- 处置Linux下Oracle Tomcat 8080端口辩说
- 「业务架构」商业模式画布
- 新浪微博、腾讯微博开放平台整合DEMO分享
- 戴尔t40服务器自动开机,新安装的戴尔T40服务器风扇不转了是什么原因?
- Ubuntu环境下挂载新硬盘
- [BZOJ4784][UOJ290][ZJOI017]仙人掌-树形DP
- 基于群智能算法的函数最值优化问题
- ts15_Forecast multiple seas_mSTL_make_subplot_rMSPE_UCM_date format_NeuralProphet_changepoint_StateS
- 狠补基础-数学+算法角度讲解卷积层,激活函数,池化层,Dropout层,BN层,全链接层
- Error in nextTick: TypeError: Cannot read property 'children' of undefined 解决
热门文章
- esriControlsMousePointer控制鼠标指针选项
- PCQQ ECDH算法C++实现
- 电脑测试瓶颈的软件,只需一招教你找出电脑的性能瓶颈-怎么测试电脑性能
- 软件测试师具备的素质_软件测试工程师应该具备哪些素质?
- 有趣的网站分享——pornhub风格生成器
- 手机应用软件下载导航php源码_轻量级网址导航程序壹网分类目录v2.5源码免费下载...
- 全国高校免费网上图书馆入口地址大全
- 购买已备案未注册的域名的步骤
- javascript学习笔记 - import存在重复引用js问题么(附详细import说明)
- C语言实现猜数字游戏(通俗易懂)