第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