使用php结合rsync、inotify实现的实时备份脚本!

1. php脚本

<?php
    
     #解析配置文件
     $arr=parse_ini_file(‘config.ini‘,true);

     #获取符合“监控”要求的目录格式的路径
     
     $dirListen=implode(‘ ‘,$arr[‘srcdir‘]);

     # 获取符合“同步目录”要求的格式的目录路径
     $sdDir=dir_path_parse($arr[‘srcdir‘],$arr[‘dstdir‘]);

     #运行程序后先同步一次
     rsync_data($sdDir[‘src‘],$sdDir[‘dst‘]);

     #监控文件系统变化
     $p=popen(‘inotifywait -mrq --format "%T %w\%f %e" -e create,modify,delete,move ‘.$dirListen,‘r‘);

     #文件系统发生变化时,进行数据同步
     while($f=fgets($p)){
    
        #重构字符串用以日志显示
        $arr=explode(‘ ‘,trim($f));
        
        $event[‘file‘]=implode(array_splice($arr,2,-1));

        list($event[‘date‘],$event[‘time‘],$event[‘oper‘])=$arr;        

        #print_r($event);
        $strLog=‘来自‘.gethostbyname(gethostname()).‘的操作:‘.$event[‘oper‘].‘  ‘.$event[‘file‘].‘ 于 ‘.$event[‘date‘].‘_‘.$event[‘time‘].‘ 同步备份到服务器上...‘;

        $strLog .= rsync_data($sdDir[‘src‘],$sdDir[‘dst‘])."\r\n";

        file_put_contents(‘databak.log‘,$strLog,FILE_APPEND);

        echo $strLog;
       
     }
     #释放资源
     pclose($p);

########################################函数################################################     

    #同步备份
    function rsync_data($srcdir,$dstdir){

            exec("rsync -togrvzp --delete --progress $srcdir $dstdir");

            return "OK";
    }    
    
    #源目录和目的目录路径处理
    function dir_path_parse($srcdir,$dstdir){

        if(php_uname(‘s‘) == ‘Windows NT‘){

            foreach ($srcdir as $k=>$v) {

                $srcdir[$k]=‘/cygdrive/‘.preg_replace(‘/[^\w-\.]{1,}/‘,‘/‘,$v);

            }

            $srcdirAll=implode(‘ ‘, $srcdir);

            $dstdir=implode(‘::‘,$dstdir);

            return array(‘src‘=>$srcdirAll, ‘dst‘=>$dstdir);

        }else{

            $srcdirAll=implode(‘ ‘, $srcdir);

            $dstdir=implode(‘::‘,$dstdir);

            return array(‘src‘=>$srcdirAll, ‘dst‘=>$dstdir);

        }
    }

2、config.ini #用来配置需要备份的目录

[srcdir]
dir1=d:\test ;目录不能以"\"结尾
dir2=d:\scan

[dstdir]
host=10.74.60.71 ;rsync服务器地址
shareDirName=zhangsan ;rsync服务器共享出来的目录
时间: 2024-10-09 10:29:52

使用php结合rsync、inotify实现的实时备份脚本!的相关文章

利用rsync+inotify实现数据实时同步脚本文件

将代码放在Server端,实现其它web服务器同步.首先创建rsync.shell,rsync.shell代码如下: #!/bin/bash host1=133.96.7.100 host2=133.96.7.101 host3=133.96.7.102 src=/data/www/ dst1=web1 dst2=web2 dst3=web3 user1=web1 user2=web2 user3=web3 /usr/local/inotify/bin/inotifywait -mrq --ti

通过rsync+inotify实现数据实时备份同步

一.环境描述 测试环境 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 环境描述: 主服务器172.26.7.50 ,从服务器172.26.7.51 实时同步/home/ 及/download 目录到从服务器 二.实施方法 1.从服务器172.26.7.51 rsync服务搭建 1.1下载软件包至从服务器 下载地址:http://rsync.samba.org/ftp/rsync/src 可根据环境需求下载相应的软件

sersync基于rsync+inotify实现数据实时同步

一.环境描述 需求:服务器A与服务器B为主备服务模式,需要保持文件一致性,现采用sersync基于rsync+inotify实现数据实时同步 主服务器A:192.168.1.23 从服务器B:192.168.1.243 实时同步/var/atlassian目录到从服务器. 二.实施 1.从服务器192.168.1.243 rsync服务搭建 1.1安装软件包 wget http://rsync.samba.org/ftp/rsync/src/rsync-3.1.1.tar.gz tar xf r

基于rsync+inotify实现数据实时同步传输

前言 与传统的cp.tar备份方式相比,rsync具有安全性高.备份迅速.支持增量备份等优点,通过rsync可以解决对实时性要求不高的数据备份需求,但随着文件数量的增大和实时同步的要求,rsync已不能满足需求,随之rsync+inotify便应运而生.本文将讲解rsync的基础知识和如何基于rsync+inotify实现数据实时同步传输. rsync相关介绍 rsync(remote sync)是一款快速增量备份工具(远程同步),支持本地复制,或者与其他SSH(安全传输).rsync主机同步.

[转帖]sersync基于rsync+inotify实现数据实时同步

sersync基于rsync+inotify实现数据实时同步 https://www.jianshu.com/p/d532a34e5cc5 前言 提到数据同步就必然会谈到rsync,一般简单的服务器数据传输会使用ftp/sftp等方式,但是这样的方式效率不高,不支持差异化增量同步也不支持实时传输. 原文地址:https://www.cnblogs.com/nbxcnxvcnb/p/12393252.html

linux之间通过rsync+inotify-tools实现自动实时备份

两台rhel5.6web服务器,上面跑的都是Apache,目录都是/va/www/html,现在想把线上的web数据实时备份到另外一台web服务器,即这个"另外一台web服务器"作为实时备用机器,这里我把线上的web机称为源服务器,作为实时备用的服务器称为目标服务器 实验过程: 第一部分:配置目标服务器: #service iptables stop #setenforce 0 #yum install httpd #service httpd start #chkconfig --l

CentOS6.6 rsync+inotify实现数据时时备份

rsync+inotify实现数据时时备份 注意:rsync的daemon模式已提前配置好了,只需要配置inotify即可. 基本环境   系统版本 主机名 IP地址 角色 备份/监控目录 CentOS  6.6 backup 10.0.0.10 rsync服务端 /backup CentOS  6.6 nfs-server 10.0.0.7 rsync客户端 /data inotify安装配置 查看系统是否支持inotify,显示以下三个文件表示支持 [[email protected] to

Rsync+inotify实现文件实时同步

数据备份.文件备份是运维.DBA等岗位最熟悉不过的话题,这里不介绍数据库的备份,简单介绍一下文件同步工具,这样的工具有很多,Windows环境下有Goodsync.FreeFileSync等,Linux下rsync.unison等,常用的实时同步,是几种工具的组合,经过组合的工具达到文件实时同步的效果. 一.常用实时同步方案 1.NFS网络文件系统 该方案是分布式架构中,解决不同节点对同一资源访问的问题,搭建NFS服务器,将其挂载在不同的节点,每个节点将公用的数据存储在NFS服务器上,实现文件的

rsync + inotify 实现数据实时同步

要求:两台Web服务器实现数据同步(我这里使用的是Centos 6.2-x64) 服务器一:172.16.11.126 服务器二:172.16.11.127 一.配置ssh备份源172.16.11.126(这里推荐使用专用的普通用户,注意相应的权限问题,如遇特殊情况使用root用户也可以,即不用考虑权限问题了. ) 1.新建备份用户rget rput 分别用来上传下载 [root@localhost ~]#  useradd rget [root@localhost ~]#  useradd r