rsync远程同步

前言:今天主播还是有点累,所以暂时没有前言拐友们

目录

一.rsync简介

1.1rsync介绍

二.rsync同步方式

三.rsync源服务器的关系

 四.配置rsync源

4.1基本思路

4.2配置文件rsyncd.conf

4.3独立的账号文件

4.4启用rsync服务

4.5rsync命令的用法

4.6rsync功能和特点

4.6.1rsync功能

4.6.2rsync特点

4.7rsync同类服务

4.8rsync与cp、scp对比

五.配置源的两种表达方式

5.1格式一

5.2格式二

六.配置服务端与客户端的实验

6.1环境准备

6.2关闭防火墙和增强功能

6.3将 Master 服务器数据备份到 Slave 服务器

 6.4slave服务器配置

 七.配置 rsync+inotify实时同步

  7.1inotify简介

   7.2Master 关闭只读模式并为共享目录赋权

 7.3优化 Slave 内核参数

  7.4客户端(192.168.226.20):编译安装 inotify-tools

 7.5编写触发同步脚本(在客户端)

 八.总结


一.rsync简介

1.1rsync介绍

  • rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。并且可以不进行改变原有数据的属性信息,实现数据的备份迁移特性
  • rsync软件支持跨平台,适用于unix/linux/windows等多种操作系统平台。
  • rsync是一个快速和非常方便的文件复制工具。它能本地复制,远程复制,或者远程守护进程方式复制,它提供了大量的参数来控制其行为的各个方面,并且允许非常灵活的方式来实现文件的传输复制。
  • 以其dela-transfer算法闻名。
  • rsync监听端口:873
  • rsync运行模式:C/S

二.rsync同步方式

  • 完整备份:每次备份都是从备份源将所有的文件或目录备份到目的地。
  • 差量备份:备份上次完全备份以后有变化的数据(他针对的上次的完全备份,他备份过程中不清除存档属性)。
  • 增量备份:备份上次备份以后有变化的数据(他才不管是那种类型的备份,有变化的数据就备份,他会清除存档属性)

三.rsync源服务器的关系

  • rsync同步源
  • 指备份操作的远程服务器,也称为备份源
  • 举个例子:负责响应来自客户机rsync同步操作的服务器叫做备份源,需要备份的服务器
  • 负责发起rsync同步操作的客户机叫做发起端,通知服务器我要备份你的数据了

rsync远程同步_第1张图片

 四.配置rsync源

4.1基本思路

  • 建立rsyncd.conf配置文件、独立的账号文件
  • 启用rsync的 --daemon模式

4.2配置文件rsyncd.conf

  • 认证配置auth users、secrets file,不加则为匿名

4.3独立的账号文件

  • 用户名:密码
  • 每行一个用户记录
  • 独立的账号数据,不依赖系统账号

4.4启用rsync服务

  • 通过 --daemon独自提供服务,rsync --daemon
  • 执行kill $(cat /var/run/rsyncd.pid)关闭服务

4.5rsync命令的用法

rsync[选项]原始位置 目标位置
常用选项:
常用选项 含义
-r 递归模式,包含目录及子目录中的所有文件。
-l 对于符号链接文件仍然复制为符号链接文件。
-v 显示同步过程的详细(verbose)信息。
-z 在传输文件时进行压缩(compress)。
-a 归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。
-p 保留文件的权限标记。
-t 保留文件的时间标记
-g 保留文件的属组标记(仅超级用户使用)。
-o 保留文件的属主标记(仅超级用户使用)。
-H 保留硬连接文件。
-A 保留 ACL 属性信息。
-D 保留设备文件及其他特殊文件。
--delete 删除目标位置有而原始位置没有的文件。(此选项简单来说就是删除差异问文件,保留一致性)
--checksum 根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。

4.6rsync功能和特点

4.6.1rsync功能

  • 作为命令:实现本地-远程文件同步
  • 作为服务:实现本地-远程文件同步

4.6.2rsync特点

  • 可以镜像保存整个目录树和文件系统
  • 可以保留原有的权限(permission,mode),owner,group,时间(修改时间,modify time),软硬链接,文件acl,文件属性(attributes)信息等
  • 传输效率高,使用同步算法,只比较变化的
  • 支持匿名传输,方便网站镜像;也可以做验证,加强安全

4.7rsync同类服务

  • sync 同步:刷新文件系统缓存,强制将修改过的数据块写入磁盘,并且更新超级块。
  • async 异步:将数据先放到缓冲区,再周期性(一般是30s)的去同步到磁盘。
  • rsync 远程同步:remote synchronous

4.8rsync与cp、scp对比

  • cp命令是一种典型的将文件完整的拷贝到一个位置。而rsync是,第一次拷贝,在目标位置没有的时候,rsync是全量拷贝过去,但是第二次拷贝的时候,只会对差异项进行同步拷贝。所有如果对同一个文件进行二次备份的话,rsync速度会相较于cp而言更快。
  • cp只支持本地,而rsync支持远程。
  • scp是基于cp原理,也是属于完整性拷贝文件。假设rsync和scp拷贝的文件都是第一,目标地址都没有要同步的文件,此时,这两者的差异在于,第一个,这个要传输的文件大不大,第二个要看在传输的过程中,用的带宽大不大。如果文件不大的情况下,scp是把数据从磁盘中的块存储提取出来,封装一下,网络传过去,此时scp更快,如果是更大的文件,比如说40G,带宽只支持100M的带宽,scp想要传输,需要拆分数据,一段一段传输。而rsync会根据一个逻辑意义上的空间,把数据划分出来,把数据先压缩再传输,所以这种方式而言,带宽校,文件大,这个时候先压缩再传输会比较快。此时适合用rsync远程同步。

五.配置源的两种表达方式

5.1格式一

用户名@主机地址::共享模块名
例:
rsync -avz [email protected]::wwwroot /opt/

5.2格式二

rsync://用户名@主机地址/共享模块名
例:
rsync -avz rsync://[email protected]/wwwroot /opt/

六.配置服务端与客户端的实验

6.1环境准备

准备两台虚拟机

192.168.226.10 服务端
192.168.226.20 客户端

6.2关闭防火墙和增强功能

systemctl stop firewalld
setenforce 0

6.3将 Master 服务器数据备份到 Slave 服务器

master(192.168.226.10)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙及安装机制

rsync远程同步_第2张图片

yum install -y httpd rsync
#rsync系统一般已默认安装,安装httpd是为了生成/var/www/html目录(后续会用到作为共享目录)

 

rsync远程同步_第3张图片

vim /etc/rsyncd.conf
#编辑rsync配置文件
uid = root
gid = root
use chroot = yes
address = 192.168.226.10
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.226.0/24
[wwwroot]        
path = /var/www/html
comment = Document Root of www.yxp.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = backuper	
secrets file = /etc/rsyncd_users.db
----详解----
uid = root											#用户id,表示共享权限能执行的身份
gid = root											#组id
use chroot = yes									#开启,禁锢在源目录,表示允许在访问我备份的目录或文件的时候,使用的角色是root,同时你访问本地目录时拥有的也是root权限
address = 192.168.226.10							#监听地址
port 873											#默认端口号为873
log file = /var/log/rsyncd.log						#日志文件存放位置
pid file = /var/run/rsyncd.pid						#存放进程id的文件位置
hosts allow = 192.168.226.0/24						#允许访问的主机网段,有点类似于黑白名单
[wwwroot]        									#共享模块的名称,rsync默认调用该模块,默认我调用的路径是该模块指定的路径
path = /var/www/html								#源目录路径
comment = Document Root of www.yxp.com				#
read only = yes										#是否为只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z	#同步时不再压缩的文件类型,因为同步时,-avz已经进行压缩
auth users = backuper									#授权用户,使用wwwroot模块的用户是哪个用户,多个账户以空格隔开
secrets file = /etc/rsyncd_users.db					#存放账号信息的数据文件,一行一个
----

rsync远程同步_第4张图片

vim /etc/rsyncd_users.db
kiki:123123
 
chmod 600 /etc/rsyncd_users.db
 
rsync --daemon
netstat -natp | grep rsync
 
cd /var/www/html
touch aaa.html bbb.html
ls

 rsync远程同步_第5张图片rsync远程同步_第6张图片

 6.4slave服务器配置

 slave(192.168.226.20)

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙及安装机制

yum install -y rsync
#安装rsync

 rsync远程同步_第7张图片

cd /opt
mkdir lsj
chmod 777 lsj

rsync远程同步_第8张图片

#将指定的资源下载到本地/opt 目录下进行备份。
格式一:
rsync -avz [email protected]::wwwroot /opt/					#密码123456

格式二:
rsync -avz rsync://[email protected]/wwwroot /opt/

rsync远程同步_第9张图片

vim /etc/server.pass

 

chmod 600 /etc/server.pass

rsync远程同步_第10张图片

 七.配置 rsync+inotify实时同步

  • 可以监控文件系统的变动情况,并做出通知响应
#调整inotify内核参数(优化)
letc/ sysctl.conf(内核参数配置文件)
inotifywait:    #用于持续监控,实时输出结果
inotifywatch:   #用于短期监控,任务完成后再输出结果
max_queue_events   #监控事件队列大小
max_user instances      #最多监控实例数,可以看成最多可以监控多少个实例
max_user_watches        #每个实例最多监控文件数
inotifywait格式参数
常见参数    说明
-m          持续进行监控
-r          递归监控所有子对象
-q          简化输出信息
-e          指定要监控哪些事件类型(*)

  7.1inotify简介

  • 使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
  • inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。

   7.2Master 关闭只读模式并为共享目录赋权

    Master(192.168.226.10)

vim /etc/rsyncd.conf
read only = no
#关闭只读模式,否则将不可写入

rsync远程同步_第11张图片

kill `cat /var/run/rsyncd.pid`
#修改完配置文件需要重启服务,这里采用直接杀掉进程号的方式

netstat -natp | grep rsync
#检查一下服务是否已被终止
 
rsync --daemon
netstat -natp | grep rsync
#再次开启服务并检查端口号确认

rsync远程同步_第12张图片

 7.3优化 Slave 内核参数

 slave(192.168.226.20)

cat /proc/sys/fs/inotify/max_queued_events      #监控事件队列
cat /proc/sys/fs/inotify/max_user_instances     #最多监控实例数
cat /proc/sys/fs/inotify/max_user_watches       #每个实例最多监控文件数
 
vim /etc/sysctl.conf         #加大每个参数
fs.inotify.max_queued_events = 16384
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
#当要监控的目录、文件数据量较多或者变化频繁时,建议加大参数值
 
sysctl -p
#刷新

rsync远程同步_第13张图片

rsync远程同步_第14张图片

 rsync远程同步_第15张图片

  7.4客户端(192.168.226.20):编译安装 inotify-tools

yum install -y gcc gcc-c++ 
#安装gcc gcc-c++ 
 
cd /opt
#切换至/opt上传inotify-tools安装包
 
tar zxf inotify-tools-3.14.tar.gz 
#解压
 
cd /opt/inotify-tools-3.14/
./configure
make -j4 && make install
#编译安装

rsync远程同步_第16张图片

rsync远程同步_第17张图片

rsync远程同步_第18张图片

rsync远程同步_第19张图片

 7.5编写触发同步脚本(在客户端)

vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/haha/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/haha/ [email protected]::wwwroot"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
	fi
done

rsync远程同步_第20张图片

rsync远程同步_第21张图片

 八.总结

rsync是一款开源的、快速的、多功能的、可实现全量及增量的本地或远程数据同步备份的优秀工具。Remote Sync,远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

你可能感兴趣的:(大数据)