当前位置:网站首页>rsync远程同步
rsync远程同步
2022-07-07 05:20:00 【Kiro君】
一、rsync简介
一款快速增量备份工具
- Remote Sync,远程同步
- 支持本地复制、远程复制、远程守护进程式复制,或者与其他SSH、rsync主机同步
- 官方网站:https://rsync.samba.org/
- 以其delta-transfer算法闻名。
- rsync监听端口:873
- rsync运行模式:C/S
二、rsync同步源
在远程同步任务中, 负责发起rsync同步操作的客户机称为客户端,而负责 响应来自客户端的rsync同步操作的服务器称为备份源, 也称之为同步源;
- 下行同步(下载)中, 同步源负责提供文档的原始位置,发起端对该位置有读取权利;
- 上行同步(上传)中,同步源负责提供文档的目标位置,发起端对该位置有写入权利;
三、rsync特点
可以镜像保存整个目录和文件系统
可以很容易做到保持原文件的权限、时间、软硬连接等
无须特殊权限即可安装
快速
第一次同步时rsync会复制全部内容,但在下一次只传输修改过的文件
rsync在传输数据的过程中可以实行压缩及解压缩操作,因此可以使用更少的宽带
安全
可以使用scp、ssh等方式来传输文件
也可通过直接socket连接
支持匿名传输,以方便进行网站镜像
四、配置rsync源
1、基本思路
建立rsyncd.conf配置文件、独立的账号文件
启用rsync的 --daemon模式
2、配置文件rsyncd.conf
认证配置auth users、secrets file,不加则为匿名
3、独立的账号文件
用户名:密码
每行一个用户记录
独立的账号数据,不依赖系统账号
4、启用rsync服务
通过 --daemon独自提供服务,rsync --daemon
执行kill $(cat /var/run/rsyncd.pid)关闭服务
五、同步方式
① 完整备份
每次备份都是从备份源将所有的文件或目录备份到目的地。
②差量备份
备份上次完全备份以后有变化的数据(针对的是上次的完全备份,备份过程中不清楚存档属性)
③增量备份
备份上次备份以后有变化的数据(会清楚存储属性)
六、rsync命令
命令使用语法
rsync 【选项】原始位置 目标位置
常用选项
常用选项 | 说明 |
---|---|
-r | 递归模式,包含目录及子目录中的所有文件 |
-l | 对于符号链接文件仍然复制为符号链接文件 |
-v | 显示同步过程的详细信息 |
-z | 在传输文件时进行压缩 |
-a | 归档模式,递归并保留对象属性,等同于-rlptgoD |
-p | 保留文件的权限标记 |
-t | 保留文件的时间标记 |
-g | 保留文件的属组标记(仅超级用户使用) |
-o | 保留文件的属主标记(仅超级用户使用) |
-H | 保留硬链接文件 |
-A | 保留ACL属性信息 |
-D | 保留设备文件及其他特殊文件 |
–delete | 删除目标位置有而原始位置没有的文件 |
–checksum | 根据对象的校验和来决定是否跳过文件 |
七、配置源的方法
格式一:
#用户名@主机地址: :共享模块名
rsync -avz [email protected]: :wwwroot /root
#backuper指的是我在同步的时候用的哪个用户身份
#wwwroot代表的是模块,模块下面会写同步的默认路径和一些特性,所以我们只需要写模块就好了
#/root指的是本地节点
格式二:
#rsync:/用户名@主机地址/共享模块名
rsync -avz rsync: //[email protected]/wwwroot /root
URL:具体的位置点,例如:http://www.baidu.com./class1/men/id01.html
URI:标识的是拥有同一类特性或类型的一个集合 ,例如http://www.baidu.com./class1/men
八、配置rsync下行同步
环境配置
主机 | 操作系统 | IP地址 | 软件 / 安装包 / 工具 |
---|---|---|---|
Master | CentOS7 | 192.168.61.22 | rsync |
Slave | CentOS7 | 192.168.61.33 | rsync / inotify-tools-3.14.tar.gz |
- 安装包链接:inotify-tools-3.14.tar.gz
- 下行同步:将master服务器数据备份到slave服务器
1、Master(192.168.61.22)
#基础环境配置
systemctl stop firewalld.service
setenforce 0
#配置rsync源服务器
rpm -q rsync
yum -y install rsync
#建立/etc/rsyncd.conf配置文件
vim /etc/rsyncd.conf #添加以下配置
uid = nobody #root
gid = nobody #root
use chroot = yes #禁锢在源目录
address = 192.168.184.50 #监听地址
port 873 #监听端口 tcp/udp 873,可通过 cat /etc/services | grep rsync 查看
log file = /var/log/rsyncd.log #日志文件位置
pid file = /var/run/rsyncd.pid #存放进程ID的文件位置
hosts allow = 192.168.184.0/24 #允许访问的客户机地址
[wwwroot]
path = /var/www/html #源目录的实际路径
comment = Document Root of www.ljm.com
read only = yes #是否为只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件类型
auth users = backuper #授权账户,多个账号以空格分隔
## secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件
uid = nobody
gid = nobody
use chroot = yes
address = 192.168.61.22
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.184.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of www.wdc.com
read only = yes
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
auth users = wdc
secrets file = /etc/user.db
#如采用匿名的方式,只要将其中的 “auth users” 和 “secrets file”配置项去掉即可
#为备份账户创建数据文件
vim /etc/user.db
wdc:123123 #无需建立同名系统用户
chmod 600 /etc/user.db
#保证所有用户对源目录 /var/www/html 都有读的权限
mkdir -p /var/www/html
chmod +r /var/www/html/
ls -ld /var/www/html/
#启动 rsync 服务程序
rsync --daemon
netstat -natp | grep rsync
cd /var/www/html
touch aaa.html bbb.html
ls
#关闭 rsync 服务
kill $(cat /var/run/rsyncd.pid)
rm -rf /var/run/rsyncd.pid
#关闭防火墙及安装机制
#rsync系统一般已默认安装,安装httpd是为了生成/var/www/html目录(后续会用到作为共享目录)
#编辑rsync配置文件
#编辑用户账号文件,固定格式为[名称:密码],一行一个
#官方要求,最好只是赋权600!
#开启服务、检测端口号,确认服务是否成功开启
#切换至共享目录下,创建文件
2、slave(192.168.61.33)
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙及安装机制
yum install -y rsync
#安装rsync
mkdir /abc
cd /abc/
#创建一个目录/abc,用来同步
rsync -avz [email protected]::wwwroot /abc
#使用rsync同步备份源的同步文件
ls
#查看同步是否成功
vim /etc/server.pass
20210311
#编辑免交互密钥文件,第一行为密码
chmod 600 /etc/server.pass
#给密钥文件赋权600
rsync -az --delete --password-file=/etc/server.pass [email protected]::wwwroot /abc
#rsync,使用密钥文件/etc/server/pass对应backuper用户,IP地址为192.168.61.22的共享模块文件进行压缩,并归档同步至当前服务器的/abc目录下,同时删除差异内容,如果原目标有的,会增加,原目标没有的,会删除。保持一致性。
ls /abc
#查看下行同步是否成功
#关闭防火墙及安装机制
#安装rsync
#创建一个目录/abc,用来同步
#使用rsync同步备份源的同步文件,并查看是否完成
#编辑免交互密钥文件,第一行为密码
#给密钥文件赋权600
九、发起端(客户端)配置 rsync+inotify
- 使用inotify通知接口,可以用来监控文件系统的各种变化情况,如文件存取、删除、移动、修改等。利用这一机制,可以非常方便地实现文件异动告警、增量备份,并针对目录或文件的变化及时作出响应。
- 将inotify机制与rsync工具相结合,可以实现触发式备份(实时同步),即只要原始位置的文档发生变化,则立即启动增量备份操作;否则处于静默等待状态。这样,就避免了按固定周期备份时存在的延迟性、周期过密等问题。
- 因为 inotify 通知机制由 Linux 内核提供,因此主要做本机监控,在触发式备份中应用时更适合上行同步。
1.Master 关闭只读模式并为共享目录赋权
Master(192.168.61.22)
vim /etc/rsyncd.conf
read only = no
#关闭只读模式,否则将不可写入
kill `cat /var/run/rsyncd.pid`
#修改完配置文件需要重启服务,这里采用直接杀掉进程号的方式
netstat -natp | grep rsync
#检查一下服务是否已被终止
rsync --daemon
netstat -natp | grep rsync
#再次开启服务并检查端口号确认
2.优化 Slave 内核参数
Slave(192.168.61.33)
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
#刷新
3.客户端(192.168.61.33):编译安装 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 -j 4 && make install
#编译安装
4.客户端启动监听
#持续监听对/abc的modify,create,move,delete操作
inotifywait -mrq -e modify,create,delete /abc
5、编写触发同步脚本
vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ [email protected]::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
----详解----
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/"
#INOTIFY_CMD变量:持续监控 /opt/abc目录中的创建,删除,移动,修改,改变时间的操作
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ [email protected]::wwwroot"
#RSYNC_CMD变量:使 xixi 用户,/etc/server.pass 密钥文件,将 /opt/xcf1 目录下的文件进行压缩,归档,保留硬链接文件同步至 192.168.61.22 的共享模块定义的目录 /var/www/html 下,并删除差异性内容,保持一致性
$INOTIFY_CMD | while read DIRECTORY EVENT FILE #持续监控...
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then #如果服务并未启动,则执行同步
$RSYNC_CMD
fi
done
----
cd /opt/
chmod +x inotify.sh
#给脚本赋权
chmod +x /etc/rc.d/rc.local
echo "/opt/inotify.sh" >> /etc/rc.d/rc.local
#设置开机自启动
sh -x inotify.sh
#执行脚本
cd /opt/abc
touch jingjing.html
rm -rf jiang.html
#创建一个新的html文件并删除之前的qwe
ls
#再次确认一下
边栏推荐
- 接口作为参数(接口回调)
- Pytoch (VI) -- model tuning tricks
- Réplication de vulnérabilité - désrialisation fastjson
- 快解析内网穿透助力外贸管理行业应对多种挑战
- OpenVSCode云端IDE加入Rainbond一体化开发体系
- Network learning (III) -- highly concurrent socket programming (epoll)
- 柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户
- 饥荒云服管理脚本
- Vulnerability recurrence easy_ tornado
- [quick start of Digital IC Verification] 13. SystemVerilog interface and program learning
猜你喜欢
Network learning (I) -- basic model learning
Leetcode simple question: find the K beauty value of a number
[quick start of Digital IC Verification] 11. Introduction to Verilog testbench (VTB)
解读创客思维与数学课程的实际运用
Unityhub cracking & unity cracking
在 Rainbond 中一键安装高可用 Nacos 集群
Quick analysis of Intranet penetration helps the foreign trade management industry cope with a variety of challenges
【踩坑系列】uniapp之h5 跨域的问题
uniapp 移动端强制更新功能
柯基数据通过Rainbond完成云原生改造,实现离线持续交付客户
随机推荐
Excel import function of jeesite form page
漏洞複現-Fastjson 反序列化
Four items that should be included in the management system of integral mall
ZCMU--1396: 队列问题(2)
Bayes' law
It's too true. There's a reason why I haven't been rich
Search for an element in a binary search tree (BST)
buureservewp(2)
Leetcode simple question: find the K beauty value of a number
轻松上手Fluentd,结合 Rainbond 插件市场,日志收集更快捷
Battery and motor technology have received great attention, but electric control technology is rarely mentioned?
Real time monitoring of dog walking and rope pulling AI recognition helps smart city
【踩坑系列】uniapp之h5 跨域的问题
Network learning (III) -- highly concurrent socket programming (epoll)
Relevant data of current limiting
Avatary's livedriver trial experience
Offer harvester: add and sum two long string numbers (classic interview algorithm question)
解析机器人科技发展观对社会研究论
Bisenet features
Basic use of CTF web shrink template injection nmap