首页 > 系统相关 >nas+inotify+rsync+shell实现实时同步文件

nas+inotify+rsync+shell实现实时同步文件

时间:2022-10-03 13:36:03浏览次数:45  
标签:rsync shell inotify share1 nfs txt data

nas+inotify+rsync+shell实现实时同步文件

环境:

10.0.0.132 备份服务器:搭建rsync同步服务端

10.0.0.129 数据服务器:inotify实现监控挂载到本地的NAS目录文件变化,通过rsync实时同步到服务端,搭建NAS服务给到master服务nginx使用,存放nginx web端的文件(通过映射nobody)

image-20221003115501789

1.基础环境

1.客户端
nginx端:10.0.0.128:/data/nfs

##挂载nas盘
cat /etc/fstab | grep nfs
10.0.0.129:/data/nfs-share1 /data/nfs nfs defaults,_netdev 0 0
mount -a
10.0.0.129:/data/nfs-share1 nfs4       98G   17G   82G  17% /data/nfs

##查看nas
[root@master nfs]#ll
total 0
-rw-r--r-- 1 root root 0 Oct  3 12:04 test.txt

2.10.0.0.129 NAS服务端+inotify监控文件变化+rsync同步,基于/etc/rsync.pas密码文件来实现,inotifywait
监控/data/nfs-share1的数据变化,共享给到10.0.0.128使用

3.10.0.0.132 rsync同步远端目录 /data/bak,基于/etc/rsyncd.conf

2.编写脚本实现实时同步

vim inotify_rsync.sh

##监控NAS目录的变化
SRC='/data/nfs-share1/'
##备份服务器为132的bak,调用rsync的协议
DEST='[email protected]::bak'

rpm -q rsync &> /dev/null  || yum -y install rsync
rpm -q inotify-tools &> /dev/null  || yum -y install inotify-tools

echo "starting monitor file change..."
sleep 2
#持续前台监控特定事件,定义时间格式、日期格式、动作(新建、删除、移动---重命名、写入、权限变化) + nas目录,输入到while内
inotifywait  -mrq  --exclude=".*\.swp" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
        FILEPATH=${DIR}${FILE}
        ##表示新建=新建,删除=删除
        rsync -az --delete  --password-file=/etc/rsync.pas $SRC $DEST 
        echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
        #日志在129上面,在129上执行的脚本
done

#2022-10-03 12:50:08 /data/nfs-share1/ e.txt
#2022-10-03 12:50:08 /data/nfs-share1/ e.txt
#2022-10-03 12:50:08 /data/nfs-share1/ e.txt
传参给DATE TIME DIR FILE

FILEPATH=${DIR}${FILE}--->/data/nfs-share1/e.txt

执行脚本,同时监控132的/data/bak

#后台挂起监控,这个东西最好是实时跑的,或是不放心可以整个crontab -e让他实时跑
nohup ./inotify_rsync.sh
starting monitor file change...

crontab -e
* * * * * /root/inotify_rsync.sh

132上0.5监控一次,watch实时监控
watch -n0.5 ls -l /data/bak

#在128nginx机器上实时写入文件
echo "rsync test" >> rsync.txt

在129上查看实时日志,输出格式,查看变化的文件
tail -f /var/log/changelist.log
At 12:27:16 on 2022-10-03, file /data/nfs-share1/a.txt was backuped up via rsync
At 12:27:16 on 2022-10-03, file /data/nfs-share1/a.txt was backuped up via rsync

在132上查看实时rsyncd的日志
tail -f /var/log/rsyncd.log
image-20221003131013163 image-20221003131143435

标签:rsync,shell,inotify,share1,nfs,txt,data
From: https://www.cnblogs.com/catyer/p/16750387.html

相关文章

  • pushgateway shell脚本
    vimpush_memory.sh#!/bin/bash#descpushmemoryinfototal_memory=$(free|awk'/Mem/{print$2}')used_memory=$(free|awk'/Mem/{print$3}')job_name="p......
  • 通过Powershell 采集电脑上安装的软件
    点击查看代码![](https://img2022.cnblogs.com/blog/1326813/202210/1326813-20221002225935257-1660369632.png)#1获取当前日期$collect_date=Get-Date-Format"yyy......
  • Rsync的简单使用
    Rsync的简单使用需求一个运行很久的系统里面可能包含了非常多的垃圾文件.但是又不可能随便删除,很多垃圾可能有某些奇葩的用法.有时候新建一个应用复制文件的话比较浪费......
  • shell脚本
    一、shell脚本基本介绍格式要求脚本要以#!/bin/bash开头,debain需要改成#!/bin/dash脚本需要有可执行权限shell常用执行方式输入脚本的绝对路径或相对路径(该方式......
  • aardio + PowerShell 可视化快速开发独立 EXE 桌面程序
    aardio可以方便地调用PowerShell,PowerShell中也可以自由调用aardio对象与函数。不用带上体积很大的System.Management.Automation.dll,直接调用系统组件,可以生成体积......
  • linux切割日志文件的shell脚本
    #!/bin/bash#获取前一天的日期suffix=`date-d"-1day""+%Y%m%d"`#split命令用于切割文件#-bSIZE:SIZEisanintegerandoptionalunit(example:10Mis10*102......
  • Linux下的shell工作原理是什么?
    Linux系统提供给用户的最重要的系统程序是Shell命令语言​​解释程序​​​。它不属于内核部分,而是在核心之外,以用户态方式运行。其基本功能是解释并执行用户打入的各种命......
  • 【Linux】【Shell命令】find 和 sed
    爱啦爱啦,find和sed结合起来,强大到超乎你的想象1.查找指定名称的文件在哪个位置find./-namea-*2.查找文件找“5天之内被更改过的档案名”find/-mtime-5;找“5天......
  • HBase Shell 命令
    列出hbase中的所有进程。例如hbaseshell<<<"list_procedures"杀掉当前阻塞的Pidhbasehbck-jhbase-hbck2-1.2.0-SNAPSHOT.jarbypass-o-rPidHBaseShell命令速......
  • shell脚本之检测文件类型
    1.功能:输入路径,检测文件类型。2.复习:shellwhile循环,if条件语句,file命令使用等。3.代码实现:catfile.sh[root@VM-4-13-centosshell]#catfile.sh#!/bin/bashwhil......