rsync同步,主服务器的好帮手
Posted 丁CCCCC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync同步,主服务器的好帮手相关的知识,希望对你有一定的参考价值。
rsync
一、概述
rsync (Remote sync, 远程同步)
是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录树,支持增量备份,并保持链接和权限,且采用优化的同步算法,传输前执行压缩,因此非常适用于异地备份、镜像服务器等应用
在远程同步任务中,负责发起rsync同步操作的客户机称为发起端,而负贵响应来自客户机的rsync同步操作的服务器称为同步源。在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限
二、rsync 远程同步
2.1 配置rsync源服务器
准备工作
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
配置文件
主配置文件
- vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes #禁锢在源目录
address = 192.168.253.11 #监听地址
port 873 #监听端口
log file = /var/log/rsyncd.log #日志文件位置
pid file = /var/run/rsyncd.pid #存放进程ID的文件位置
hosts allow = 192.168.253.0/24 #允许访问的客户机地址
[wwwroot] #共享模块名称
path = /var/www/html #源目录的实际路径
comment = Document Root of www.lic.com
read only = yes #是否为只读
dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步时不再压缩的文件类型
auth users = backuper #授权账户,多个账号以空格分割
secrets file = /etc/rsyncd_users.db #存放账户信息的数据文件
PS:如果想要用匿名的方式,上述配置中 “ auth users ” 和 “ secrets file ” 去掉即可
- vim /etc/rsyncd_users.db
backuper:123123
- chmod 600 /etc/rsyncd_users.db
设置源目录权限
- chmod +r /var/www/html/
- ls -ld /var/www/html/
- touch 111.txt
启动程序
- rsync --daemon
关闭程序
- kill $(cat /var/run/rsyncd.pid)
- rm -rf /var/run/rsyncd.pid
2.2 Slave服务器配置
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
连接
- rsync -avz backuper@192.168.253.11::wwwroot /opt/
设置免交互
编辑免交互密钥文件
-
vim /etc/server.pass
-
chmod 600 /etc/server.pass
-
crontab -e
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.253.11::wwwroot /opt/
- systemctl restart rsyncd
三、rsync+inotify
3.1 概述
使用inotify通知接口,可以用来监控文件系统的各项变化,比如删除,移动,修改等,针对目录或文件的变化及时作出响应
inotify和rsync 两个相结合,可以实现出发时备份,只要原始位置的文档发生变化,则立即启动增量备份操作,否则就处于静默等待的状态
inotify通知机制由Linux内核提供,所以主要做本机监控,在触发式备份中应用时更适合上行同步
3.2 配置rsync源服务器
修改文件内容
- vim /etc/rsyncd.conf
read only = no
重启
- kill $(cat /var/run/rsyncd.pid)
- 关闭
- netstat -anpt | grep rsync
- rsync --daemon
- 打开
- netstat -anpt | grep rsync
3.3 inotify 内核参数设置
在Linux内核中,默认inotify机制提供了三个调控参数
- max_queue_events (监控时间队列,默认值16384)
- max_user_instances (最多监控实例数,默认值128)
- max_user_watches (每个实例最多监控文件数,默认值8192)
内核参数优化
- vim /etc/sysctl.conf
末行添加
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576
- sysctl -p
3.4 安装inotify
解压
- cd /opt
- tar zxvf inotify-tools-3.14.tar.gz
编译安装
cd /opt/inotify-tools-3.14/
./configure
make && make install
3.5 编译自动监控脚本
- vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /var/www/html/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.253.11::wwwroot"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
- chmod +x inotify.sh
- bash inotify.sh
- echo ‘/opt/inotify.sh’ >> /etc/rc.d/rc.local
此脚本用来检测本机/var/www/html 目录有变动情况就更新触发rsync操作
触发过程:
(1)在本机运行 /opt/inotify_rsync.sh 脚本程序
(2)切换到本机的 /var/www/html 目录,执行增加、删除、修改文件等操作
(3)查看远端服务器中的wwwroot目录下的变化情况
3.6 源服务器设置
- vim /etc/rsyncd.conf
uid = root
gid = root
以上是关于rsync同步,主服务器的好帮手的主要内容,如果未能解决你的问题,请参考以下文章