本节主要学习了rsync服务的概述,特性,应用场景,数据同步方式,rsync传输模式,rsync的应用,rsync的命令,rsync+inotfy实时同步
目录
③ inotifywait -mrq -e modify,create,move,delete /var/www/html
一、概述
rsync是linux 下一个远程数据同步工具 |
他可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync 算法减少数据的传输 |
会对比两个文件的不同部分,传输差异部分,因此传输速度相当快 |
rsync可拷贝、显示目录属性,以及拷贝文件,并选择性的压缩及递归拷贝 |
二、特性
1.快速
第一次传输全部,下一次传输差异
rsync在传输过程中可以实行压缩和解压缩,使用更少的带宽
2.安全
可以使用scp、ssh等方式传输
直接通过socket连接
支持匿名传输、方便进行网站镜像
三、应用场景
增量同步 备份迁移
四、数据的同步方式
数据备份:拉取(下载) | pull |
数据恢复:推送(上传) | push |
五、rsync传输模式
本地传输 | 本地同步数据,类似于cp |
远程传输 | 远程同步数据,类似于scp |
守护传输 | 通过模块化的方式实现批量传输 |
六、rsync应用
1、安装
yum -y install rsync | 如果已经安装,直接启动 |
systemctl start rsyncd |
2、监听端口号
TCP/873
七、rsync命令
1、格式—rsync [选项] 原始位置 目标位置
①作为远程命令
拉取 | rsync [OPTION...] [USER@]HOST:SRC... [DEST] |
推送 | rsync [OPTION...] SRC... [USER@]HOST:DEST |
②作为rsync服务
拉取 | rsync [OPTION...] [USER@]HOST::SRC... [DEST] |
rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST] | |
推送 | rsync [OPTION...] SRC... [USER@]HOST::DEST |
rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST |
2、选项
-a | 归档模式,递归并保留对象属性,等同于-rlptgoD |
-v | -verbose 显示同步过程的详细信息 |
-z | 在传输文件时进行压缩 |
3、举例
本地 | rsync -avz abc/ /opt |
rsync -avz /abc /opt | |
远程 | rsync -avz [email protected]:/etc/hostname /root/ |
rsync -avz /root/hostname [email protected]:/etc/hostname |
本地
远程(客户机登录操作)
4、配置文件
/etc/rsyncd.conf
全局 配置 |
address | -独立运行时,用于指定服务器运行的 IP 地址,默认本地所有IP |
port | 指定 rsync 守护进程监听的端口号,默认 873 | |
pid file | rsync 的守护进程将其 PID 写入指定的文件 | |
log file | 指定 rsync 守护进程的日志文件,而不将日志发送给 syslog | |
syslog facility | 指定 rsync 发送日志消息给 syslog 时的消息级别 | |
socket options | 指定自定义 TCP 选项 | |
lockfile | 指定rsync的锁文件存放路径 | |
timeout | 超时时间 |
模块配置 | path | 指定当前模块的同步路径,该参数是必须指定的 |
comment | 给模块指定一个描述 | |
use chroot | 在服务运行时要不要把他锁定在家目录,默认为 true | |
uid和gid | 指定rsync运行用户和用户组,默认nobody | |
max connections | 最大并发连接数,0为不限制 | |
lock file | 指定支持 max connections的锁文件。默认/var/run/rsyncd.lock | |
list | 指定列出模块列表时,该模块是否被列出。默认为 true | |
read only | 只读选择,默认true | |
write only | 只写选择,不让客户端从服务器上下载文件。默认false | |
ignore errors | 忽略IO错误,默认true | |
ignore nonreadable | 指定 rysnc 服务器完全忽略那些用户没有访问权限的文件。 | |
dont compress | 用来指定那些在传输之前不进行压缩处理的文件。 | |
hosts allow | 指定哪些主机客户允许连接该模块。默认值为 * | |
hosts deny | 指定哪些主机客户不允许连接该模块 | |
auth users | 指定用于上传的用户名 | |
secrets files | 指定密码文件 |
5、守护进程
①配置
uid=rsync | |
gid=rsync | |
fake super=yes | # 用于允许非root用户,在备份目录创建文件 |
list=false | # 默认true,允许查看本机有哪些模块 |
auth users=rsync_backup | # 用于指定认证用户 |
read only = false | |
max connections=4 | # 允许最大连接数 |
read only=false | # 默认yes,模块目录只读权限 |
ignore errors | # 屏蔽错误报错 |
timeout=900 | # 指定rsync传输超时时间 |
[backup] | |
path=/backup |
②创建用户
useradd rsync -s /sbin/nologin -M
③创建认证用户的密码
echo 'rsync_backup:123456' >/etc/rsync.passwd
chmod 600 /etc/rsync.passwd
④准备模块目录
mkdir /backup
chown rsync.rsync /backup
⑤重启服务
systemctl restart rsyncd
⑥客户端远程传输
rsync -avz /etc/hosts [email protected]::backup
服务器查看
⑦通过密码文件实现免密传输
vim /etc/rsync.passwd | 密码 |
chmod 600 /etc/rsync.passwd | |
rsync -avz /etc/hosts [email protected]::backup --password-file /etc/rsync.passwd |
客户端操作
服务器查看
⑧练习
1、使用认证用户为jx_名字缩写,认证密码为班级编号 |
2、模块名称为juexing |
3、客户端创建文件user.txt,内容为所有的用户信息 |
4、自行修改文件内容,在服务器上实现同步 |
1、修改配置文件
2、创建用户并设置密码,修改权限
3、客户端输入 cat /etc/passwd > /user.txt
4、服务端重启服务
5、客户端查看
服务器查看
6、修改客户端user.txt
服务器查看
八、rsync+inotfy实时同步
1、服务器端
①安装网站服务,启动,但是不写首页文件
②修改主配置文件/etc/rsyncd.conf
uid = root |
gid = root |
[wwwroot] |
path = /var/www/html |
comment = backup export area |
read only = false |
hosts allow = 192.168.1.0/24 |
2、开发客户端
①安装inotify工具
inotify-tools |
tar xf inotify-tools-3.14.tar.gz |
./configure && make && make install |
②配置内核参数
vim /etc/sysctl.conf |
fs.inotify.max_user_instances = 1024 |
fs.inotify.max_queued_events = 16384 |
fs.inotify.max_user_watches=1048576 |
sysctl -P |
③ inotifywait -mrq -e modify,create,move,delete /var/www/html
④编写脚本
vim /opt/inotify_rsync.sh |
#!/bin/bash INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/" RSYNC_CMD="rsync -azH --delete /var/www/html/192.168.115.130::wwwroot" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do $RSYNC_CMD done |
⑤赋予执行权限
chmod +x inotify_rsync.sh
⑥写入文件
vim /etc/rc.local
/root/inotify_rsync.sh
客户端设置
服务器查看