跳到主要内容

第13章 Rsync&lsyncd实时同步

今日重点:

rsync命令模式--了解即可

rsync服务模式--必须掌握(流程清晰,配置文件能看懂)

inotify工具--了解即可

lsyncd服务--必须掌握(流程清晰,配置文件能看懂)

[https://www.processon.com/view/link/663c879ccd843c19ec25555f?cid=663c22a1b9d60e2396a5abac](https://www.processon.com/view/link/663c879ccd843c19ec25555f?cid=663c22a1b9d60e2396a5abac)

第1章 Rsync传输软件

1.Rsync介绍

远程传输文件

远程同步目录里的文件

2.备份的模式

全量备份

增量备份

完全同步

3.Linux远程传输命令scp

scp命令:

1)推/上传 push 我把文件发给别人

scp [选项] 源文件 10.0.0.8:目标服务器的路径

2)拉/下载 pull 我把别人的文件拉过来

scp [选项] 10.0.0.8:目标服务器的路径 本机要保存的路径

常用选项:

-r 递归传输目录以及目录下的文件

scp的局限性:

1)需要知道对方服务器密码

2)想往哪传随便传

3)每次都是全量传输,不能判断那个是已经传过的

4)还能拉取目标主机文件

5)只能增加文件,不能删除目标机器的文件

第2章 Rsync命令模式

1.命令格式

rsync [选项] 源文件 目标IP:目标路径		push 推送

rsync [选项] 目标IP:目标路径 本机路径 pull 拉取

2.重要选项

-a	all 大部分参数都包含了

-v 显示传输详情

-z zip压缩

--delete 完全同步

3.全量传输实验

第一步:在nfs-31上创建/data目录

第二步:在backup-41上创建/data目录

第三步:在nfs-31上创建测试文件

第四步:在nfs-31上使用rsync传送给backup-41

第五步:在backup-41上检查是否传过来了

4.增量传输实验

第一步:在nfs-31上创建新文件

第二步:在nfs-31上使用rsync传送给backup-41

第三步:检查是否只传输了新增加的内容

5.文件对比传输实验

第一步:修改nfs-31上某个文件

第二步:在nfs-31上使用rsync传送给backup-41

第三步:检查是否只传输了改变内容的文件

6.完全同步传输

rsync -avz --delete /data/ 10.0.0.41:/data/

rsync -avz --delete 10.0.0.41:/data/ /data/

小结:

谁在前以谁的目录为主

第3章 Rsync服务模式介绍

1.rsync命令行模式有哪些问题

1)每次都需要输Linux系统用户的密码

2)目录随便传

2.rsync服务模式可以做什么?

1)限制传输的目录,你不需要知道具体的路径

2)不需要知道系统用户密码,可以配置rsync服务专属的密码

3.rsync服务模式配置文件解读

cat > /etc/rsyncd.conf << 'EOF'

uid = www #用来写入文件的用户

gid = www #用来写入文件的用户组

port = 873 #端口号

fake super = yes #启用时,允许在不具有root权限的情况下存储文件的所有权和权限信息。这对于备份操作非常有用。

use chroot = no #如果设置为**yes**,rsync将在传输开始前改变根目录到模块的路径。这增加了安全性,但在某些配置中可能导致问题。这里设置为**no**。

max connections = 200 #设置同时可以连接到rsync服务器的最大客户端数量。

timeout = 600 #如果在指定的时间(秒)内没有收到任何数据,rsync将断开连接。这里设置为600秒。

ignore errors #这个设置会使rsync在遇到某些IO错误时仍然继续运行

read only = false #指定rsync模块是可读写的。设置为**false**意味着客户端可以上传文件到服务器。

list = false #这个设置防止了rsync在没有相应认证的情况下被列出。提高了安全性。

auth users = rsync_backup #rsync的虚拟账号

secrets file = /etc/rsync.passwd #rsync的虚拟账号的密码

log file = /var/log/rsyncd.log #日志存放路径

[backup] #模块名称

path = /backup #模块对应的真实绝对路径

[data]

path = /data

EOF

第4章 Rsync服务模式-服务端部署

第一步:安装

yum install rsync -y

第二步:编写配置文件

cat > /etc/rsyncd.conf << 'EOF'

uid = www

gid = www

port = 873

fake super = yes

use chroot = no

max connections = 200

timeout = 600

ignore errors

read only = false

list = false

auth users = rsync_backup

secrets file = /etc/rsync.passwd

log file = /var/log/rsyncd.log

[backup]

path = /backup

[data]

path = /data

EOF

第三步:创建用户

groupadd -g 1000 www

useradd -u 1000 -g 1000 -M -s /sbin/nologin www

第四步:创建目录并更改所属用户和用户组

mkdir /\{data,backup\} -p

chown -R www:www /data

chown -R www:www /backup

第五步:创建密码文件

echo "rsync_backup:luffy" >> /etc/rsync.passwd

第六步:修改密码文件权限

chmod 600 /etc/rsync.passwd

第七步:启动服务

systemctl start rsyncd

第八步:检查

systemctl status rsyncd

第5章 Rsync服务模式-客户端部署

注意:

客户端不需要配置文件

客户端不需要启动服务

第一步:安装

yum install rsync -y

第二步:使用服务模式的账号密码连接

rsync -avz --delete /data/ rsync_backup@10.0.0.41::data

第三步:验证是否可以免交互传输

第一种方法:环境变量

export RSYNC_PASSWORD=luffy

rsync -avz --delete /data/ rsync_backup@10.0.0.41::data

第二种方法:将密码写入文件,然后命令指定使用密码文件

echo "luffy" >> /etc/rsync_clinet.pass

chmod 600 /etc/rsync_clinet.pass

rsync -avz --delete --password-file=/etc/rsync_clinet.pass /data/ rsync_backup@10.0.0.41::data

第6章 实时同步

1.实时同步难点

1)什么条件才同步?

2)同步哪些文件?

3)多久同步一次?

4)用什么工具同步?

2.inotify工具--了解即可

通过inotify可以监控文件系统中添加,删除,修改,移动等各种事件

inotify-tools是用来管理inotify功能的工具

3.使用inotify-tools监控文件变化

第一步:安装

yum install inotify-tools -y

第二步:监控指定目录的变化

inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f' -e delete,create /backup

4.编写脚本--理解即可

cat > notifiy.sh << 'EOF'

#!/bin/bash

###免密变量

export RSYNC_PASSWORD=luffy

###第一次先全量同步

rsync -avz --delete /data/ rsync_backup@10.0.0.41::data

###判断是同步文件还是同步目录

inotifywait -mrq --format '%w%f' -e delete,create,modify /data|while read line

do

ls $line && rsync -avz $line rsync_backup@10.0.0.41::data || rsync -avz --delete /data/ rsync_backup@10.0.0.41::data

done

EOF

第7章 lsyncd--黑科技

1.安装

yum install lsyncd -y

2.修改配置文件

只监听一个目录:

cat > /etc/lsyncd.conf << 'EOF'

settings \{

logfile = "/var/log/lsyncd/lsyncd.log",

statusFile = "/var/log/lsyncd/lsyncd.status",

inotifyMode = "CloseWrite",

maxProcesses = 8,

\}

sync \{

default.rsync,

source = "/data",

target = "rsync_backup@172.16.1.41::data",

delete = true,

exclude = \{ ".*" \},

delay = 1,

rsync = \{

binary = "/usr/bin/rsync",

archive = true,

compress = true,

verbose = true,

password_file = "/etc/rsync.passwd",

_extra = \{"--bwlimit=200"\}

\}

\}

EOF

监听两个目录:

[root@nfs ~]# cat /etc/lsyncd.conf

settings \{

logfile = "/var/log/lsyncd/lsyncd.log",

statusFile = "/var/log/lsyncd/lsyncd.status",

inotifyMode = "CloseWrite",

maxProcesses = 8,

\}

sync \{

default.rsync,

source = "/data",

target = "rsync_backup@172.16.1.41::data",

delete = true,

exclude = \{ ".*" \},

delay = 1,

rsync = \{

binary = "/usr/bin/rsync",

archive = true,

compress = true,

verbose = true,

password_file = "/etc/rsync.passwd",

_extra = \{"--bwlimit=200"\}

\}

\}

sync \{

default.rsync,

source = "/backup",

target = "rsync_backup@172.16.1.41::backup",

delete = true,

exclude = \{ ".*" \},

delay = 1,

rsync = \{

binary = "/usr/bin/rsync",

archive = true,

compress = true,

verbose = true,

password_file = "/etc/rsync.passwd",

_extra = \{"--bwlimit=200"\}

\}

\}

3.启动

systemctl start lsyncd

4.传输测试

lsyncd > sersyncd > 自己写的脚本

更新: 2024-05-09 20:49:14