良许Linux教程网 干货合集 详解RSYNC工作原理及适用方法

详解RSYNC工作原理及适用方法

rsync是linux系统下的数据镜像备份工具。使用快速增量备份工具Remote Sync可以远程同步,支持本地复制,或者与其他SSH、rsync主机同步。

image-20220904223348711

rsync原理

rsync 是 linux 下同步文件的一个高效算法,用于同步更新两处计算机的文件和目录,并适当利用查找 文件中的不同块以减少数据传输。 rsync 的主要特点就是增量传输,只对变更的部分进行传送。

增量同步算法

假如我们现在需要同步两个文件保持一致,并且只想传送不同的部分,那么我们就需要对两边的文件做 diff ,但是这两个文件在两台不同的机器上,无法做 diff 。如果我们做 diff ,就要把一个文件传到 另一台机器上做 diff ,但这样一来,我们就传了整个文件,这与我们只想传输不同部的初衷相背。于 是我们就要想一个办法,让这两边的文件见不到面,但还能知道它们间有什么不同。这就是 rsync 的算 法。

工作场景介绍

1 定时备份

cron+rsync

2 实时数据同步

inotify+ rsync

安装部署服务端

安装xineted服务

yum install rsync.x86_64 -y
yum install xinetd -y1.2.

修改xineted配置文件

vim /etc/xinetd.d/rsync
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
port = 873
log_on_failure = USERID
}1.2.3.4.5.6.7.8.9.10.11.12.

修改rsync配置文件

vim /etc/rsyncd.conf
uid = rsync #用户ID
gid = rsync #组ID
use chroot = no #若为 true,则 rsync 在传输文件之前首先 chroot 到 path 参数所指定的目录下。
max connections = 200 #最大链接数
timeout = 300 #超时参数
pid file = /var/run/rsyncd.pid #进程号对应PID
lock file = /var/run/rsync.lock #锁文件,防止数据不一致
log file=/var/log/rsyncd.log #日志文件
[backup] #模块
path = /backup #提供访问的目录
ignore errors #忽略错误
read only = false #可写
list = false # 不能使用ls 和 ll等列表命令
hosts allow = 192.168.1.0/24 #允许那些链接
hosts deny = 0.0.0.0/32 #拒绝那些链接 允许和拒绝二选一
secrets file = /etc/rsync.password # 允许链接的虚拟用户
auth users = root #指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块。
strict modes = yes #指定是否监测口令文件的权限。若为 true 则口令文件只能被 rsync 服务器运行身份的用户访问,其他任何用户不可以访问该文件。1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.

准备密码文件

vim /etc/rsync.passwd
服务端用户:服务端密码
chmod 600 /etc/rsync.passwd1.2.3.

启动服务

systemctl start xinetd.service
ss  -tnl | grep 8731.2.

准备文件

mkdir /test
touch /test/1231.2.

部署客户端

在server2上安装rsync

yum install rsync.x86_64 -y1.

参数详解

参数 含义 参数说明
-v –verbose 详细模式输出,传输时的进度等消息
-z –compress 传输时进行压缩以提高效率,–compress-level=NUM 可按级别压缩
-a –archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDI
-r –resursive 对子目录以递归模式,及目录下面的所有目录都同样传输
-t –times 保持文件时间信息
-o –owner 保持文件属主信息
-p –perms 保持文件权限
-g –group 保持文件属组信息
-P –progress 显示同步的过程及传输时的进度等信息
-D –devices 保持设备文件信息
-l –links 保留软连接
-e –rsh=COMMAND 使用的信道协议,指定代替rsh的shell程序,如ssh

显示详细信息

   –exclude=PATTERN 指定排除不需要传输的文件模式
   –exclude-from =file (文件名所在的目录文件)
   –bwlimit=RATE limit socket I/O bandwidth(字节为单位)
   –delete 让目标目录SRC和源目录数据DST一致1.2.3.4.

六种不同的工作模式

模式一,查看服务端有哪些可用数据源

rsync --list-only root@服务器IP::1.

模式二,本地文件拷贝到本地,当src和dest都不包含有冒号时就启动从本地进行拷贝

rsync 文件 拷贝地址1.

模式三,本地文件拷贝到远程(服务器),当dest包含冒号时就启动拷贝到远程

rsync 文件 root@服务器IP:/服务器目录1.

模式四,将远程(服务器)文件拷贝到本地,当src包含冒号的时候就启动远程拷贝到本地

rsync root@服务器IP:/服务器目录/需要的文件  拷贝地址1.

模式五,从远程服务器拷贝到本地,当src使用两个冒号的时候启用这种方式,冒号后面跟的是服务端设置的模块

rsync -r root@服务器IP::服务器目录  拷贝地址1.

模式六,从本地拷贝到远程服务器,当dest包含两个冒号时就启动这种方式,冒号后面跟

rsync -r 拷贝目录  root@服务器IP::服务器目录1.

案例,定时备份

客户端需求

1.客户端提前准备存放的备份的目录,目录规则如下:/backup/主机IP时间

⒉客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/主机IP时间

3.客户端最后将备份的数据进行推送至备份服务器

4.客户端每天凌晨1点定时执行该脚本

5.客户端服务器本地保留最近7天的数据,避免浪费磁盘空间

服务端需求

1.服务端部署rsync,用于接收客户端推送过来的备份数据

⒉.服务端需要每天校验客户端推送过来的数据是否完整

3.服务端需要每天校验的结果通知给管理员

4.服务端仅保留6个月的备份数据,其余的全部删除

客户端准备

创建目录

mkdir /backup1.

安装expect工具

yum install expect* -y1.

准备expect脚本

vim rsync.exp
 #!/usr/bin/expect
 set mulu [lindex $argv 0]
 set timeout 10
 spawn rsync -avzr /backup/$mulu root@192.168.80.10::backup_server
 expect Password
 send "123456\r"
 expect eof1.2.3.4.5.6.7.8.

准备备份脚本

vim beifen.sh
 #!/bin/bash
 准备压缩文件的目录
 mulu=`ip a | grep global|awk -F'[ /]+' '{print $3}'`_`date +%F`
 echo $mulu
 mkdir -pv /backup/$mulu &> /dev/null
 # 打包待发送的数据
 tar zcf /backup/$mulu/conf.tar.gz /etc/passwd /etc/vimrc &> /dev/null
 touch /backup/$mulu
 # 发送数据
 #rsync -avzr /backup/$mulu root@192.168.80.10::backup_server
 expect rsync.exp $mulu
 # 保留七天以内的数据
 find /backup -mtime +7 -delete1.2.3.4.5.6.7.8.9.10.11.12.13.14.

计划任务

cat /etc/crontab
 ......
 0 1 * * * root /root/beifen.sh1.2.3.

服务端部署参考上述部署

模拟一个月的数据来验证结果

for i in {1..30};do date -s 2021/08/$i; /root/beifen.sh ; done

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部