rsync远程同步

Remote Sync,远程同步,它是一个开源的快速备份工具,可以在不同主机之间镜像同步整个目录,支持增量备份、保持连接和权限,且采用优化的同步算法,传输前执行压缩,因此分床适用于异地备份、镜像服务器等应用。支持本地复制,或者与其他SSH、rsync主机同步。官方网站:http://rsync.samba.org

语法格式:
#rsync [选项] 原始位置 目标位置
常用选项:
-a: 归档模式,递归并保留对象属性,等同于 -rlptgoD
-v: 显示同步过程的详细(verbose)信息
-z: 在传输文件时进行压缩(compress)
-H: 保留硬连接文件
-A: 保留ACL属性信息
–delete: 删除目标位置有而原始位置没有的文件
–checksum:根据对象的校验和来决定是否跳过文件

rsync 同步源服务器配置:

基本思路
建立rsyncd.conf配置文件、独立的账号文件
启用rsync的–daemon模式

用户backuper,允许下行同步
操作的目录为 /var/www/html/
(1)下载安装包

# yum -y install httpd		安装 httpd环境
# yum -y install rsync		安装 rsync服务

(2)修改配置文件

# vi /etc/rsyncd.conf         
全删,复制进去
 uid = nobody
 gid = nobody
 use chroot = yes
 address = 192.168.188.135
 port 873
 log file = /var/log/rsyncd.log
 pid file = /var/run/rsyncd.pid
 hosts allow = 192.168.188.0/24
[wwwroot]
 path = /var/www/html
 comment = Document Root of www1.bdqn.com
 read only = yes
 dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z
 auth users = backuper
 secrets file = /etc/rsyncd_users.db
 
同步源最好仅允许以只读方式做同步,另外,同步可以采用匿名的方式,
只要将其中的“auth users” "secrets file"配置去掉

在这里插入图片描述
(3)设置 rsync账号文件
采用“用户名:密码”的记录格式,每行一个用户记录,独立的账号数据,不依赖于系统账号

# vi /etc/rsyncd_users.db
添加:
backuper:pwd123

# chmod 600 /etc/rsyncd_users.db 

在这里插入图片描述
(4)启用rsync服务

通过--daemon独自提供服务
# rsync --daemon           	

--如果要停止这个服务  kill $(cat /var/run/rsyncd.pid)

# netstat -anpt | grep rsync

在这里插入图片描述
(5)在 /var/www/html目录中,新建文件,做测试用

# cd /var/www/html/
# vi 123.html   
写入123
# vi 456.html
写入456             

客户端配置:

# yum -y install rsync	 --最小化是没有这个rsync命令的,需要安装下
# rsync /etc/fstab /opt	 --把 /etc/fstab拷贝到 /opt下
# ll /opt

# rsync -rl /etc/fstab /boot/grub /opt	 --把 /etc/fstab /boot/grub 拷贝到 /opt下
# ll /opt

在这里插入图片描述

配置源的两种表示方法

格式1:用户名@主机地址::共享模块名

# rsync -avz backuper@192.168.188.136::wwwroot /opt
输入密码:pwd123
# cd /opt
# ll		--123.html、456.html 被拷贝过来

在这里插入图片描述
格式2: rsync://用户名@主机地址/共享模块名

# rsync -avz rsync://backuper@192.168.188.136/wwwroot /root
输入密码:pwd123
# cd /root
# ll		--123.html、456.html 被拷贝过来

在这里插入图片描述

rsync同步操作:

下行rsync源:wwwroot共享 /opt/myweb
客户端:

# mkdir /opt/myweb
# rsync -avzH --delete backuper@192.168.188.136::wwwroot  /opt/myweb
输入密码:pwd123
# cd /opt/myweb/
# ll

在这里插入图片描述
rsync源的免交互处理
客户端:

# vi /etc/server.pass
插入:pwd123
# chmod 600 /etc/server.pass		设置权限
# rsync -az --delete --password-file=/etc/server.pass backuper@192.168.188.136::wwwroot /opt/myweb/  
# cd /myweb/
# ll

在这里插入图片描述

# crontab -e   	--每天晚上10点半对服务器网站目录更新一次
30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/server.pass backuper@192.168.188.136::wwwroot /opt/myweb/

# systemctl restart crond
# systemctl enable crond

rsync实时同步

由于定期同步 执行备份的时间固定,延迟明显、实时性差;当同步源长期不变化时,密集的定期任务是不必要的。所以使用实时同步更适合。
实时同步的优点:一旦同步源出现变化,立即启动备份;只要同步源无变化,则不执行备份。

辅助软件:inotify-tools
关于inotify:从版本2.6.13开始提供,可以监控文件系统的变动情况,并作出通知响应

rsync+inotify实时同步配置

客户端:

# cat /proc/sys/fs/inotify/max_queued_events 	--监控队列大小
16384
# cat /proc/sys/fs/inotify/max_user_instances 	--最多监控实例数
128
# cat /proc/sys/fs/inotify/max_user_watches 	--每个实例最多监控文件数
8192

调整inotify内核参数:

# vi /etc/sysctl.conf
末行添加:
fs.inotify.max_queued_events = 32768
fs.inotify.max_user_instances = 1024
fs.inotify.max_user_watches = 1048576

# sysctl -p      使生效
解释:
max_queue_events:监控队列大小
max_user_instances:最多监控实例数
max_user_watches:每个实例最多监控文件数

安装inotify-tools辅助工具
inotifywait:用于持续监控,实时输出结果
inotifywatch:用于短期监控,任务完成后再出结果

上传inotify-tools-3.14.tar.gz到/opt目录下
# yum install gcc gcc-c++ make -y
# cd /opt
# tar xzvf inotify-tools-3.14.tar.gz 
# cd inotify-tools-3.14/
# ./configure
# make && make install
# inotifywait -mrq -e modify,create,move,delete  /opt/myweb      --监控/opt/myweb

这边要另外开个终端在/opt/myweb 写一个文件进文件监控

# cd /opt/myweb
# vi 789.html	随便写
看后台监控生效

在这里插入图片描述
通过inotifywait触发rsync同步操作
使用while、read持续获取监控结果
根据结果可以作进一步判断,决定执行何种操作

# vim /opt/inotify.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/myweb/"
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/myweb/ backuper@192.168.188.136::wwwroot"
 
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
#       echo "${FILE} was rsynced" >>/opt/inotify_rsync.log

    fi
done

# chmod +x /opt/inotify.sh
# chmod 777 /opt/myweb/  

rsync 同步源服务器配置:
写的权限放开

# vi /etc/rsyncd.conf
改为:
read only = no 
# kill $(cat /var/run/rsyncd.pid)       --关闭rsyncd服务
# rsync --daemon                              --启动rsyncd服务
# netstat -anpt |grep rsync
tcp    0     0 192.168.188.136:873      0.0.0.0:*      LISTEN      64194/rsync 

两边的同步目录权限都设置777

# chmod 777 /var/www/html/

客户端:

# cd /opt/
# ./inotify.sh 

需要再开一个终端

# vi /opt/myweb/110.html      --里面插入任意数据

在同步源 192.168.188.136:
#ll /var/www/html/ --会发现这个地方会多个110.html文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值