Original address http://blog.csdn.net/5iasp/article/details/13630927
Design and implementation of real-time file synchronization scheme for two servers under Linux
Assume the following requirements:
Assume two servers:
192.168.0.1 The source server has the directory /opt/test/
192.168.0.2 The target server has the directory /opt/bak/test/
The purpose of implementation is to keep a certain file directory of the two servers synchronized in real time
Implementation method: Implemented through the combination of rsync+inotify-tools
Need to install software:
1. rsync synchronization software
Need to be installed on both the source server and the target server
Source server: It is an rsync client, not Need to configure
Target server: It is the rsync server and needs to configure the contents in /etc/rsyncd.conf
After installation, you need to create a new configuration file: /etc/rsyncd.conf
The configuration file is in: /etc/
The content of the file is as follows:
uid = root
gid = root
use chroot = no
max connections = 10
strict modes = yes
pid file=/var/run/rsyncd.pid
lock file=/var/run/ rsyncd.lock
log file= =/var/run/rsyncd.log
[www]
path= /opt/bak/test
comment= analyze
read only = false
hosts allow = *
2 . inotify-tools tool
This tool is a real-time file monitoring tool that requires Linux operating system kernel support. Kernel support requires at least version 2.6.13
Check whether the operating system supports it. Execute as follows:
uname -r View version
Return:
2.6.32-220.4.1.el6.x86_64
means that version 2.6.32 is greater than 2.6.13, so it is supported.
Execution:
ll /proc/sys/fs/inotify
total 0
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_queued_events
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_instances
-rw-r--r-- 1 root root 0 Oct 18 12:18 max_user_watches
There are three outputs, which means inotify is supported by default and the inotify-tools tool can be installed.
If it is not supported, you need to use a new version of the Linux operating system. If the version meets the requirements, it can be installed.
After installing inotify-tools, the following two files will be generated in the relevant installation directory:
ll /usr/local/bin/
total 88-rwxr-xr-x 1 root root 44327 Oct 10 15:32 inotifywait
-rwxr-xr-x 1 root root 41417 Oct 10 15:32 inotifywatch
means the installation is successful.
inotify_bak.sh
#!/bin/bash
src=/opt/test//usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read file
do
/usr/bin/rsync -arzuq $src 192.168.0.2::www/
echo " ${file} was rsynced" >>/opt/soft/log/rsync.log 2>&1
Note : The www here is the module name configured in the target server/etc/rsyncd.conf: [www]
Give execution permissions: chmod +x inotify_bak.sh
Then execute: inotify_bak.sh & Put it in the background for execution
4. About starting
Target server: Start the rsync background service first: /usr/bin/rsync --daemon
Source server: Execute inotify_bak.sh &
5. Test:
Create a new directory in the source server directory and files, the inotify_bak.sh script will detect it and synchronize it to the relevant directory of the target server
tail -f /opt/soft/log/rsync.log
The above introduces the design and implementation of the real-time synchronization scheme of files between two servers under Linux, including various aspects. I hope it will be helpful to friends who are interested in PHP tutorials.