一、rsync简介
1.rsync是一个快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,保持连接和权限,在传输前压缩,非常适合异地备份、镜像服务器等
2.rsync有上行和下行同步
上行:恢复
下行:备份
二、安装配置rsync
1.rsync默认已经安装,只需要进行配置
2.配置
1)建立配置文件
vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes #禁锢在源目录
address = 192.168.1.10 #监听地址(本机)
port 837 #监听端口
log file = /var/log/rsyncd.log #日志文件
pid file = /var/run/rsyncd.pid #pid文件
hosts allow = 192.168.1.3 #允许访问自己的客户机地址,可以是网段
[111] #共享模块名称
path = /var/www/html #源目录的实际路径
comment = Document Root of www.love.com
read only = no #是否为只读
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件类型
auth users = backuper #授权账户(虚拟,不存在于系统)
secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件
#可以采用匿名同步,将auth user和secret file去掉即可
2)创建存放账户信息的数据文件
vim /etc/rsyncd_users.db
backuper:123456 #上述用户名和密码
chmod 600 /etc/rsyncd_users.db
#备份用户需要对源目录有读取权限
3)rsync控制
启动:rsync --daemon
停止:kill $(cat /var/run/rsyncd.pid)
三、rsync的使用
1.命令
1)下行(两种格式,在客户机上执行)
rsync 选项 虚拟用户名 @目标主机地址::共享模块名/目标目录(rsync客户机上的目录)
rsync -avz backuper@192.168.1.10::111 /mybak
rsync 选项 rsync://虚拟用户名@目标主机/共享模块名/目标目录
rsync -avz --delete rsync://backuper@192.168.1.10:/111 /mybak
2)上行
rsync 选项 /目标目录 虚拟用户名 @目标主机地址::共享模块名
rsync -zva /mybak/ backuper@192.168.1.10::111
rsync 选项 /目标目录 rsync://虚拟用户名@目标主机:/共享模块名
rsync -avz --delete /mybak/ rsync://backuper@192.168.1.10:/111
2.选项集解释
-r 递归模式,包含目录及子目录中的所有文件
-l 对于符号链接文件,仍然复制为符号链接符号
-v 显示同步过程的详情
-a 归档模式,保留文件的权限属性等信息,等用于组合选项 -rlptgoD
-z 在传输文件时进行压缩
-p 保留文件的权限标记
-t 保留文件的时间标记
-g 保留文件的属组标记(仅超级用户使用)
-o 保留文件的属主标记(仅超级用户使用)
-H 保留硬链接文件
-A 保留ACL属性
-D 保留设备文件及其他特殊文件
--delete 删除目标位置有而原始位置没有的文件
--checksum 根据校验和来决定是否跳过大文件
四、配置rsync+inotify实时同步(在客户机执行)
1.原理
内核提供了inotify通知接口,来监控文件系统,一旦发生变化立马同步
2.配置实时同步
1)调整inotify内核参数
vim /etc/sysctl.conf
添加
fs.inotify.max_queued_events = 16384 #监控事件对列
fs.inotify.max_user_instances = 1024 #最多监控实例数
fs.inotify.max_user_watches = 1048576 #每个实例最多监控文件数
sysctl -p
2)安装inotify-tools
解压inotify-tools-3.14.tar.gz
略
安装
./configure
make && make install
3.开启实时监控
inotifywait -mrq -e modify,create,move,delete /var/www/html
-m 持续监控
-r 递归整个目录
-q 简化输出信息
-e 指定要监控那些事件
modify 事件,修改
create 事件,创建
move 事件,移动
delete 事件,删除
attrib 事件,属性修改
4.编写触发式同步脚本
1)编写脚本
vim /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /mybak"
RSYNC_CMD="rsync -zaH --delete --password-file=/etc/server.pass /mybak/ backuper@192.168.1.10::111"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ]
then
$RSYNC_CMD
fi
done
2)创建密码文件
vim /etc/server.pass
123456
chmod 600 /etc/server.pass
3)加上执行权限
chmod +x /opt/inotify_rsync.sh
- 加入开机启动
echo '/opt/inotify_rsync.sh' >> /etc/rc.local
5)测试看是否能监控并同步
来源:CSDN
作者:ⅨⅦ
链接:https://blog.csdn.net/sixisixsix/article/details/103821120