rsync 远程同步rsync+inotify 实时同步

Posted 奋斗的蜗牛灬

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rsync 远程同步rsync+inotify 实时同步相关的知识,希望对你有一定的参考价值。


前言

rsync 图标
在这里插入图片描述
rsync 和 scp 的区别,rsync做的工作不单是copy,还要比较新旧文件的改动,如果改动就更新,不改动就维持原状。而scp是直接覆盖的,比较粗暴,如果scp是文件夹的操作,那旧的文件有可能被直接删除了,因为是整个文件夹的覆盖。

一、rsync 远程同步

rsync(Remote Sync,远程同步)

  • 一款开源的快速备份工具
  • 支持本地复制
  • 也可以在不同主机(例如:其他SSH、rsync主机)之间镜像同步整个目录树,支持增量备份,并保持钳接和权限。
  • 采用优化的同步算法,传输前执行压缩,,因此非常适用于异地备份、镜像服务器等应用。
  • 官方网站:https://rsync.samba.org/

rsync 同步源

在远程同步任务中,负责发起rsync司步操作的客户机称为发起端,
而负责响应来自客户机的rsync同步操作的服务器称为同步源(备份源)

在同步过程中,同步源负责提供文件的原始位置,发起端应对该位置具有读取权限。

例:
A服务器同步B服务器的数据,B服务器就是备份源
反过来,B服务器同步A服务器的数据,那么A服务器就是备份源

在这里插入图片描述

二、配置 rsync 源

  • 建立 rsyncd.conf 配置文件、独立的 rsync 账号文件(rpm -qc rsync)
    • 配置文件rsyncd.conf
      • 需手动配置,语法类似于Samba配置
      • 认证配置auth users、secrets file,不加则为匿名
    • rsync账号文件
      • 采用“用户名:密码”的格式记录,每行一个用户记录
      • 独立的账号数据,不依赖系统账号
  • 启用rsync服务
    • 通过 --daemon独自提供服务:rsync --daemon
    • 可以通过执行kill $(cat /var/run/rsyncd.pid)关闭服务

rsync命令

#命令的用法
rsync [选项] 原始位置 目标位置

发起端吧文件从原始位置 拷贝到 目标位置

#----------常用选项--------------------------
-r:递归模式,包含目录及子目录中的所有文件。
-l:对于符号链接文件仍然复制为符号链接文件。
-v:显示同步过程的详细(verbose)信息。
-z:在传输文件时进行压缩(compress)。
-a:归档模式,保留文件的权限、属性等信息,等同于组合选项“-rlptgoD”。
-p:保留文件的权限标记。
-t:保留文件的时间标记。
-g:保留文件的属组标记(仅超级用户使用)。
-o:保留文件的属主标记(仅超级用户使用)。
-H:保留硬连接文件。
-A:保留 ACL 属性信息。
-D:保留设备文件及其他特殊文件。
--delete:删除目标位置有而原始位置没有的文件,即删除差异文件,保留一致性。
--checksum:根据校验和(而不是文件大小、修改时间)来决定是否跳过文件。
--password-file=file:从file中得到密码,用于免交互处理,file文件的权限要是600

比如 rsync -avz

rsync+inotify
编写触发式同步脚本

vim /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/"   #监控/opt/abc/ 目录的创建删除移动修改权限操作
RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ lisi@192.168.163.10::wwwroot"

#$INOTIFY_CMD 开启,将结果一行一行读取,如果监控到 执行 whiile 循环
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
    if [ $(pgrep rsync | wc -l) -le 0 ] ; then
        $RSYNC_CMD
	fi
done

cd /opt/
chmod +x inotify_rsync.sh
. /opt/inotify_rsync.sh &

#加入开机自动执行
chmod +x /etc/rc.d/rc.local
echo '/opt/inotify_rsync.sh' >> /etc/rc.d/rc.local

inotify 有点优点就是双方主机文件可以增删同步

删除 就是用 空文件夹替换原文件夹

以上是关于rsync 远程同步rsync+inotify 实时同步的主要内容,如果未能解决你的问题,请参考以下文章

rsync远程同步+inotify监控

rsync远程同步+inotify监控

rsync远程同步+inotify监控

Centos 配置rsync远程同步及使用inotify+rsync实时备份

rsync远程同步:下行同步上行同步+inotify实时同步

rsync远程同步与inotify监控