rsync
一、rsync远程同步
1、rsync的作用和特点
1)、作用
支持本地或远程数据备份
2)、特点
远程备份
结合触发器进行数据备份
支持增量备份
支持大文件或者小文件同步
支持异地数据灾备
3)、备份目的
防止发生灾难将损失降到最低
保证数据恢复可靠运行
2)、备份的方式
cp:复制数据
tar:压缩归档
rsync:支持远程或者异地数据灾备,可靠性强
2、常见的备份工具
1)、系统工具
cp scp sftp tar
2)、第三方工具
rsync
3、配置rsync源
备份rsync主配置文件
cp /etc/rsync.conf /etc/rsync_conf.bak
1)、rsync源主配置文件位置
/etc/rsyncd.conf
2)、主配置文件常见的选项
uid = nobody //管理的用户
gid = nobody //管理的组
use chroot = yes //禁锢在根目录
address = 192.168.100.10 //监听的IP地址
port = 873 //监听的端口
log file = /var/log/rsyncd.log //日志文件
pid file = /var/run/rsyncd.pid //服务启动后保存服务id
hosts allow = 192.168.100.20 //允许访问的客户端地址
[share] //共享模块
path = /share //源目录实际路径
comment = ftp export area //说明
read only = yes //只读
dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //同步时不再压缩的数据文件
auth users = bob //授权账户
secrets file = /etc/rsyncd_users.db //存放账户信息的数据文件
3)、创建验证账户密码
vim /etc/rsyncd_users.db
bob:pwd@123
chmod 600 /etc/rsyncd_users.db
4)、创建同步源根目录和测试文件
mkdir /share
echo "share.gx.com" /share/tb.txt
4、管理rsync服务
1)、守护进程方式运行rsync
rsync --daemon
2)、查看rsync服务
netstart -anptu | grep rsync
3)设置rsynce开机自启
vim /etc/rc.d/rc.local
rsync --daemon
4)、停止rsync服务
killall -9 rsync
二、rsync客户端的基本使用
1、rsync命令常见的选项
-r 递归模式:包含目录及目录中的所有文件
-l 对于符合链接文件仍然复制为符合链接文件
-v 显示同步过程的详细信息
-a 归档模式,保留文件的权限,属性等信息,等同于组合选项“-rlptgoD”
-z 在传输文件时进行压缩
-p 保留文件的权限标记
-t 保留文件的时间标记
-g 保留文件的属组标记(仅超级用户使用)
-o 保留文件的属主标记(仅超级用户使用)
-H 保留硬链接文件
-A 保留ACL属性信息
--delete 删除目标位置有而原始位置没有的文件
--checksum 根据校验和来决定是否跳过文件
2、配置rsync同步本地数据
1)、本地同步数据
rsync -avz /bdqn/ /benet/
2)、同步数据删除目标目录中的数据
rsync -avz --delete /bdqn/ /benet/
3、同步经过身份验证的rsync
1)、第一种身份验证方式访问
(格式:rsync -avz rsync://用户名@主机地址/共享模块名 指定同步目录)
rsync -avz rsync://bob@192.168.100.10/share /benet/
2)、第二种身份验证方式访问
(格式:rsync -avz 用户名@来源地址::共享模块名 指定同步目录)
rsync -avz bob@192.168.100.10::share /accp/
3)、第三种加载密码配置文件同步数据
echo "pwd@123" > ./password.txt
chmod 600 ./password.txt
rsync -azv --delete --password-file=./password.txt bob@192.168.100.10::share /accp
4、配置客户端自动同步数据
1)、客户端配置存储密码文件
vim rsync_passwd.txt
pwd@123
chmod 600 rsync_passwd.txt
2)、设置计划任务自动同步
crontab -e
*/2 * * * * /usr/bin/rsync -az --delete --password-file=/root/rsync_passwd.txt bob@192.168.100.10::share /share
3)、启动计划任务
systemctl restart crond
systemctl enable crond
三、rsync+inotify-tools
1、inotify的作用和计划任务同步的缺点
1)inotify实时同步数据的作用
支持实时同步
减小延迟等待
占用带宽资源小
源数据发生改变自动触发同步数据
2)、计划任务的缺点
延迟时间长
同步速度慢
集中化备份占用带宽资源
影响用户访问
数据量大
2、安装inotify
1)、配置编译安装
tar zxf inotify-tools-3.14.tar.gz -C /usr/src/
cd /usr/src/inotify-tools-3.14/
./configure && make && make install
3、inotify监控工具的类型
1)、inotifywait
持续性监控文件变化
应用广泛
2)、inotifywatch
一次性监控
不支持持续性监控
配置临时同步使用
3)、inotifywait的常见选项
-e 指定监控事件
-m 配置持续监控
-r 表示递归整个目录
-q 简化输出信息
4)、inotifywait常见的监控事件类型
create 创建文件或目录触发事件
move 移动或重命名触发事件
delete 删除数据触发事件
modify 修改数据触发事件
attrib 修改文件或者目录属性触发事件
5)、实时监控数据
inotifwait -mrq -e move,delete,modify,attrib /share/
4、配置inotify自动实时同步
1)、修改内核参数
vim /etc/sysctl.conf
fs.inotify.max_queued_events = 32768 //监控事件列队
fs.inotify.max_user_instances = 2048 //最多监控实例数
fs.inotify.max_user_watches = 1048576 //每个实例最多监控文件数
2)、更新内核参数
sysctl -p
2)、配置rsync服务器端无需身份验证访问客户端
ssh-keygen -t RSA 生成密钥
ssh-copy-id -i root@192.168.100.20 上传公钥
4)、创建自动化脚本
vim inotify.sh
#!/bin/bash
INT="inotifywait -mrq -e modify,create,move,delete /share" 监控rsvn源/var/www/html/目录
RSY="rsync -avz --delete /share root@192.168.100.20:/" 数据同步到192.168.100.20的/share目录
$INT | while read DIRECTORY FILE EVENT 比较INW状态,状态成立执行RSY开始同步,同步完成退出
do
$RSY &> /inot.log
done
3)、设置开机自启
vim /etc/rc.d/rc.local
rsync --daemon
/root/rsync.sh
5)、添加执行权限
chmod +x /etc/rc.d/rc.local
6)、rsync所在的发起端要上传数据时,rsync同步源上的源目录必须设置为read only = on,并且目录本身也需要具备写权限
vim /etc/rsyncd.conf
read only = no