rsync +infotify实时同步

元气满满
2025-03-05 / 0 评论 / 0 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2025年03月05日,已超过601天没有更新,若内容或图片失效,请留言反馈。

背景

数据备份是每个系统管理员和数据管理者都需要考虑的一个问题,无论是为了防止数据丢失、恢复数据,还是为了数据同步。然而,每个备份方案都有其优缺点。常见的备份方法有增量备份、差异备份、完全备份等。本文将介绍一种基于rsync和inotify实时备份实现方案,该方案具有快速、高效、实时同步等优点。

rsync简介

rsync是一个远程备份工具,用于在本地和远程计算机之间同步和备份文件。它能够实现增量备份,节省了大量时间和带宽。rsync也支持加密传输和备份,这使得它非常适合用于远程备份,同时也可用于本地备份。

rsync的优点:

(1)、增量备份:仅备份发生了变化的文件,节省带宽和存储空间。
(2)、安全:支持加密传输和备份。
(3)、支持备份到远程服务器。

notify简介

inotify是一个Linux内核特性,用于监控文件系统中的事件。它能够监控文件或目录的创建、删除、修改、移动等事件,通过这些事件触发的钩子,实现实时监控和响应。
● inotify的优点:
(1)实时性:可以实时检测文件的变化,并且响应快速。
(2)精确性:能够准确的检测到文件的修改时间和内容。
(3)可靠性:能够检测到文件的修改,无论是人工修改还是软件修改。

rsync和inotify实时备份实现方案

1、安装rsync和inotify

yum -y install rsync inotify-tools

2、编写inotify+rsync脚本,实时监控文件或目录的变化

#!/bin/bash
while true; do
    sleep 2
    echo "#####################################################"  >> /var/log/infotify.log
    #echo $(date '+%c') >> /var/log/infotify.log
    inotifywait -r -e modify,create,delete,move /data/nfs-pods/ >> /var/log/infotify.log &
    rsync -avz /data/nfs-pods/ root@ip:/data/nfs-pods/ >> /var/log/infotify.log &
    echo " " >> /var/log/infotify.log

    # 查看日志大小
    dus=$(ls -lh /var/log/infotify.log |awk '{print $5}'|grep G|awk -F'M' '{print $1}')
    b=2

    # 判断日志如果大于2个G,那么就删除日志
    dateus=$(awk -v num1=${dus} -v num2=${b} 'BEGIN{print(num1>num2)?"0":"1"}')
    echo ${dateus}

    if [ ${dateus} -eq 0 ];then
       echo "" > /var/log/infotify.log
    else
       exit 0
    fi
done > /dev/null 2>&1
  • 时间任务

          • sleep 3 && /usr/local/bin/infotify

3、将执行脚本放到/usr/local/bin 下

mv /data/infotify /usr/local/bin/infotify
chmod +x /usr/local/bin/infotify

4、测试执行脚本

infotify &

tail -f /var/log/infotify.log
#####################################################
2023-Jul-21 10:04:07
sending incremental file list

sent 289 bytes  received 15 bytes  608.00 bytes/sec
total size is 0  speedup is 0.00
#####################################################
2023-Jul-21 10:04:18
sending incremental file list

sent 289 bytes  received 15 bytes  608.00 bytes/sec
total size is 0  speedup is 0.00
#####################################################
2023-Jul-21 10:04:28
sending incremental file list

sent 289 bytes  received 15 bytes  608.00 bytes/sec
total size is 0  speedup is 0.00
#####################################################
2023-Jul-21 10:04:38
sending incremental file list

sent 289 bytes  received 15 bytes  608.00 bytes/sec
total size is 0  speedup is 0.00
#####################################################
2023-Jul-21 10:04:48
sending incremental file list

sent 289 bytes  received 15 bytes  608.00 bytes/sec
total size is 0  speedup is 0.00

完成测试,即可使用。耗cpu及内存不高很低的哦!

注意事项

● rsync需要设置为无密码登录,可以使用ssh密钥实现。具体来说,需要在本地计算机上生成ssh密钥,然后将公钥添加到远程服务器的authorized_keys文件中,这样就可以无密码登录远程服务器。
● inotify对监控的目录的子目录监控是有限制的,对于不在监控列表中的子目录,不会自动监控,需要手动添加监控。
● 需要避免同步过程中的文件锁定和冲突,可以使用rsync的一些参数进行控制,如–exclude、–exclude-from、–delete等。

0

评论 (0)

取消