mysql linux php 程序员 Firefox wordpress Python Windows google Android 微软 java apache nginx HTML5 Ubuntu linux命令 centos 开源 shell

用rsync和inotify来实现服务器文件的实时同步

Linux运维管理实际操作中,文件的备份,对每个系统管理者与电脑使用者来说都很重要,常见的方式,将文件传送至另一台电脑做备份,或者另存在动存储备份之外操作系统,实际应用中,为了数据文件的安全性,需要实时备份服务器上的文件数据,本文将简述用rsyncinotify来实现服务器文件的实时同步

rsync-inotify

实验的目的是将192.168.1.10上 /data/www 目录的文件同步复制到192.168.1.20上的 /data/bakwww 目录中。

主服务器配置 (上安装rsync和inotify)

安装rsync (rsync在主服务器上不需要配置文件)

# wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
# tar zxvf rsync-3.0.9.tar.gz
# cd rsync
# ./configure –prefix=/usr/local/rsync
# make && make install

建立密码认证文件

# echo “ltpwd” > /usr/local/rsync/rsync.pas
# chmod 600  /usr/local/rsync/rsync.pas

Inotify 是文件系统事件监控机制,作为 dnotify 的有效替代。dnotify 是较早内核支持的文件监控机制。Inotify 是一种强大的、细粒度的、异步的机制,它满足各种各样的文件监控需要,不仅限于安全和性能。

inotify 可以监视的文件系统事件包括:

  • IN_ACCESS,即文件被访问
  • IN_MODIFY,文件被 write
  • IN_ATTRIB,文件属性被修改,如 chmod、chowntouch
  • IN_CLOSE_WRITE,可写文件被 close
  • IN_CLOSE_NOWRITE,不可写文件被 close
  • IN_OPEN,文件被 open
  • IN_MOVED_FROM,文件被移走,如 mv
  • IN_MOVED_TO,文件被移来,如 mv、cp
  • IN_CREATE,创建新文件
  • IN_DELETE,文件被删除,如 rm
  • IN_DELETE_SELF,自删除,即一个可执行文件在执行时删除自己
  • IN_MOVE_SELF,自移动,即一个可执行文件在执行时移动自己
  • IN_UNMOUNT,宿主文件系统被 umount
  • IN_CLOSE,文件被关闭,等同于(IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
  • IN_MOVE,文件被移动,等同于(IN_MOVED_FROM | IN_MOVED_TO)
  • 注:上面所说的文件也包括目录。

下载地址:https://github.com/rvoicilas/inotify-tools/wiki/

安装inotify

# wget http://cloud.github.com/downloads/rvoicilas/inotify-tools/inotify-tools-3.14.tar.gz
# tar zxvf inotify-tools-3.14.tar.gz
# cd inotify-tools-3.14
# ./configure –prefix=/usr/local/inotify
# make && make install

创建启动脚本

# vim /usr/local/inotify/rsync.sh

#!/bin/bash
src=/data/www
des=webuser@192.168.1.10::web
/usr/local/bin/inotifywait -mrq  –format  ‘%w%f’ -e modify,delete,create,attrib ${src} | while read  x
        do
                rsync -avz –delete –progress $src $des &&
                echo “$x was rsynced” >>/usr/local/rsync/rsync.log
        done

/usr/local/inotify/rsync.sh &

备份服务器的配置

安装rsync

# wget https://rsync.samba.org/ftp/rsync/rsync-3.0.9.tar.gz
# tar zxvf rsync-3.0.9.tar.gz
# cd rsync
# ./configure –prefix=/usr/local/rsync
# make && make install

建立密码文件

# echo “webuser:ltpwd” > /usr/local/rsync/rsync.pas
# chmod 600  /usr/local/rsync/rsync.pas

建立配置文件

# vim /usr/local/rsync/rsync.conf

uid = root
gid = root
use chroot = no
max connections = 3
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
[web]
path = /data/bakwww
ignore errors
read only = no
list = no
auth users = webuser
secrets file = /usr/local/rsync/rsync.pas

启动rsync

# /usr/local/rsync/bin/rsync –daemon –config=/usr/local/rsync/rsync.conf

延伸阅读

评论